首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取Vue js中父元素的宽度

获取Vue js中父元素的宽度
EN

Stack Overflow用户
提问于 2022-01-17 14:21:54
回答 1查看 4.2K关注 0票数 1

我正在尝试在Vue.js中实现一个名为Vue.js的组件。我的要求是获取CamViewMatrix的父级的宽度(比如在created()的CamViewMatrix方法中),这样我就可以用它进行一些计算(有一些基于时间的图表需要响应,这是不可能的,除非宽度的初始值在手上)。

代码语言:javascript
复制
<div>
  <div class='controller-wrapper'>
    ...
  </div>
  <CamViewMatrix v-bind:cameras='cams' />
</div>

我尝试将一个id分配给它的父级,并将其传递给CamViewMatrix,并尝试将其传递给getElementById,但它无法做到。代码如下:

代码语言:javascript
复制
<div id='parentid'>
  <div class='controller-wrapper'>
    ...
  </div>
  <CamViewMatrix v-bind:cameras='cams' parentId='parentid' />
</div>

在CamViewMatrix组件中:

代码语言:javascript
复制
<script>
export default {
  name: 'CamViewMatrix',
  props: {
    parentId: {
      type: String,
      required: true,
    },
    ...
  },
  created() {
    console.log(document.getElementById(this.parentId)); // ️ logs null
    ...
  }
}

使用上面的代码,我无法获得父元素(它是日志null)。

也曾尝试使用ref$parent,但未能成功。请帮我这个忙。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-17 14:40:26

created()是一个错误的生命周期挂钩。

如果您检查docs:https://v2.vuejs.org/v2/guide/instance.html#Lifecycle-Diagram中的生命周期图

元素填充尚未完成(呈现),只创建实例。

您很可能在mounted中做了什么。

接下来,您可以通过this.$parent访问组件的父级,通过this.$parent.$el访问元素。

退房:https://v2.vuejs.org/v2/api/#Instance-Properties

如果您希望从父元素中获得特定元素,请创建一个引用并访问它,如下所示:

this.$parent.$refs.refNameYouAdded

如果它是一个Vue组件,那么它将是一个Vue实例,因此您需要再次访问$el

this.$parent.$refs.refNameYouAdded.$el

否则,如果它是一个HTML元素,那么就不需要这样做了。

大多数情况下,上面的答案是有效的,但有时如果父组件做了一些事情,比如将元素移到其他地方,那么它可能不准确。

正如注释中提到的,您仍然可以通过执行以下操作来访问正确的父元素:

this.$el.parentElement

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70742865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档