从子组件发送数据?

时间:2018-01-28 16:35:32

标签: vue.js vuejs2

我有一个子组件,当这个组件上的数据更改我发出数据时,我这样做:

<input type="checkbox" value="john" v-model="users" @click="updateUsers">

当用户单击该复选框时,它会运行updateUsers方法,该方法会发出this.users值。

updateUsers() {      
    this.$emit('users', this.users)
},

问题是@click方法在v-model用户更新之前运行。所以没有发出任何东西。

我是以错误的方式接近这个吗?基本上我想要它,以便当子组件上的数据发生更改时,父组件会知道它并传递数据。

2 个答案:

答案 0 :(得分:0)

如果希望发出更新的变量,watch变量。只有在没有viewmodel状态时才能查看DOM,告诉你需要知道什么。

通过使用change事件来发出数据项,您将混合概念并依赖于执行顺序。更改事件不保证数据项在处理程序触发时更新。如果要从事件中发出,则应发出event.target.value,而不是单独更新的数据项。

如果要发出数据项,您应该观察它的变化。

由于您正在发布更改,因此您的组件可能不应该拥有该数据项,它应该将其作为支柱接收。

答案 1 :(得分:0)

我认为您希望使用@change代替,以便您可以捕获正在更新的值的实例,然后发送emit。