首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vuejs无法访问组件中的引用

Vuejs无法访问组件中的引用
EN

Stack Overflow用户
提问于 2016-11-30 09:08:39
回答 7查看 96.2K关注 0票数 45

我正在尝试获取canvas元素,它位于组件的模板中,为vuejs1找到了很好的文档,但对于vuejs2没有找到,其中"ref“是获取元素的唯一方法。虽然我正在获取对象,但是当我试图访问变量时,它是未定义的。

HTML

代码语言:javascript
复制
<div id="app>
  <template id="image-capture">
    <div class="row" >
      <canvas ref="icanvas" ></canvas>
    </div>
  </template>
</div>

JS

代码语言:javascript
复制
const ic = {
  template: '#image-capture' ,
   
  created () {
    console.log(this.$refs); //this returns object
    console.log(this.$refs.icanvas); // but this is undefined
  }
}

const routes = [
  { path: '/ic', component:   ic},
]

const router = new VueRouter({
  routes 
})

 new Vue({
  router,
   }).

$mount('#app')

我要去拿icanvas元素。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2016-11-30 09:21:23

created是在处理模板之前触发的。

您可以在这里找到更多详细信息:https://v2.vuejs.org/v2/guide/instance.html#Lifecycle-Diagram

您应该能够访问mounted事件上的mounted

代码语言:javascript
复制
mounted: function() {
    console.log(this.$refs.icanvas);
},
票数 47
EN

Stack Overflow用户

发布于 2018-06-28 10:46:25

您可以使用$nextTick()函数,$nextTick()内部的代码将在DOM更新后运行。

代码语言:javascript
复制
this.$nextTick(function () {

    console.log(this.$refs.ANY_COMPONENT_REF)

})
票数 29
EN

Stack Overflow用户

发布于 2018-07-12 08:41:06

我也遇到了同样的问题,在我的例子中,我通过访问使用nextTick更改v-if的方法中的ref来解决它。

代码语言:javascript
复制
methods: {
open() {
  this.show = true; //v-if condition
    this.$nextTick(function() {
      this.titleWidth = this.$refs.titleBg.clientWidth - 30;
    });
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40884194

复制
相关文章

相似问题

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