【发布时间】:2019-07-22 10:50:17
【问题描述】:
我想调用子组件的方法。
我认为开发人员使用$nextTick 函数来处理所有子组件渲染后的数据。
但是v-if指令渲染的时候怎么调用子组件的方法。
这是example。
var comp = Vue.component('child', {
data:function(){
return {
}
},
template:`
<div class="child">
I'm a child
</div>
`,
methods:{
callFunction:function(){
console.log("I'm called");
}
}
});
var vm = new Vue({
el:'#app',
data:{
if_child:false
},
methods:{
showChild(){
this.if_child = !this.if_child;
//Calling child's function
this.$refs.child.callFunction();
}
}
})
.child{
display:inline-block;
padding:10px;
background:#eaeaea;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<div v-if="if_child">
<child ref="child" class="child"></child>
</div>
<button type="button" @click="showChild">
Toggle Child
</button>
</div>
当我尝试调用 showChild() 中子组件的方法 callFunction() 时,会引发错误。
未捕获的类型错误:无法读取未定义的属性“callFunction”
我认为原因是因为它在渲染子组件之前调用了子组件的函数。
我该如何解决这个问题?
谢谢。
【问题讨论】:
标签: javascript vue.js vue-component