Vue.js 如何获取子组件';s watcher';是否从Vue 2中的父组件更新了值?

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

我有两个处于父子关系中的组件。在子选择组件中,我为当前选择的值定义了一个观察者,我希望父级在其更改时获得更新的值。我尝试使用事件,但父级只能侦听自己的vm

在子组件中

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
    }
}