我有观察员的组件
props: {
propShow: { required: true, type: Boolean }
},
data() {
return {
show: this.propShow
}
},
watch: {
propShow: {
handler: (val, oldVal) => {
this.show = val;
}
}
}
每当parent
组件更改propShow
时,此组件必须更新它的show
属性。 This
组件也会修改show
属性,这就是我需要show
和propShow
的原因,因为Vue.js不允许直接更改属性。
这一行
this.show = val;
导致错误
TypeError: Cannot set property 'show' of undefined
因为处理程序中的this
是undefined
。
为什么?
答案 0 :(得分:27)
您必须在此处使用function
语法,如文档here中所述:
请注意,您不应使用箭头功能来定义观察者(例如searchQuery:newValue => this.updateAutocomplete(newValue))。原因是箭头函数绑定了父上下文,因此这不是您期望的Vue实例,并且this.updateAutocomplete将是未定义的。
所以你的代码应该是:
watch: {
propShow: {
handler: function(val, oldVal) {
this.show = val;
}
}
}