Vue.js 如何获取子组件';s watcher';是否从Vue 2中的父组件更新了值?
我有两个处于父子关系中的组件。在子选择组件中,我为当前选择的值定义了一个观察者,我希望父级在其更改时获得更新的值。我尝试使用事件,但父级只能侦听自己的vm 在子组件中Vue.js 如何获取子组件';s watcher';是否从Vue 2中的父组件更新了值?,vue.js,Vue.js,我有两个处于父子关系中的组件。在子选择组件中,我为当前选择的值定义了一个观察者,我希望父级在其更改时获得更新的值。我尝试使用事件,但父级只能侦听自己的vm 在子组件中 watch: { selected (value) { this.$emit('selectedYearChange', value) } } 在父母中 mounted () { this.$on('selectedYearChange', function (value) { this.select
watch: {
selected (value) {
this.$emit('selectedYearChange', value)
}
}
在父母中
mounted () {
this.$on('selectedYearChange', function (value) {
this.selectedYear = value
})
}
由于我上面提到的原因,这显然不起作用。我无法在文档中找到相关示例。html:
<Parent>
<Child @selected-year-change=HandleChange(data)></Child>
</Parent>
Javascript/父组件:
watch: {
selected (value) {
this.$emit('selectedYearChange', value)
}
}
HandleChange: function(data){}
祝你好运。也许工作 您可以在父组件中使用的子组件元素本身上设置事件侦听器,并向其传递要执行的方法
//parent component
<div id="app>
<child-comp @selected-year-change='changeYear'></child-comp>
</div>
见
避免使用camelCase作为事件名称使用kebab case,因为HTML属性不区分大小写,可能会导致问题事件侦听器应位于子组件上,而不是父组件上,并且不要在方法中使用fat arrow函数。这一点很有效,对于任何想了解Vamsi关于kebab case用法的文档的人来说都是如此。
methods:{
//you get the event as the parameter
changeYear(value){
this.selectedYear = value
}
}