我有一个子组件,当这个组件上的数据更改我发出数据时,我这样做:
<input type="checkbox" value="john" v-model="users" @click="updateUsers">
当用户单击该复选框时,它会运行updateUsers方法,该方法会发出this.users值。
updateUsers() {
this.$emit('users', this.users)
},
问题是@click方法在v-model用户更新之前运行。所以没有发出任何东西。
我是以错误的方式接近这个吗?基本上我想要它,以便当子组件上的数据发生更改时,父组件会知道它并传递数据。
答案 0 :(得分:0)
如果希望发出更新的变量,watch
变量。只有在没有viewmodel状态时才能查看DOM,告诉你需要知道什么。
通过使用change
事件来发出数据项,您将混合概念并依赖于执行顺序。更改事件不保证数据项在处理程序触发时更新。如果要从事件中发出,则应发出event.target.value
,而不是单独更新的数据项。
如果要发出数据项,您应该观察它的变化。
由于您正在发布更改,因此您的组件可能不应该拥有该数据项,它应该将其作为支柱接收。
答案 1 :(得分:0)
我认为您希望使用@change
代替,以便您可以捕获正在更新的值的实例,然后发送emit。