我有parent
Vue中的数据,该数据作为prop
传递到child
视图。如果父项中的数据发生了变化,那么child
究竟何时会看到此更改?
我发现这不是瞬间的。
在下面的片段中,我将父母的data
作为prop
传递给child
。然后data
中的parent
会增加,event
会通过child
将bus
广播到child
。 parent
会读取data
<div id="wrapper">
data in parent: {{ data }}
<child :data="data" :bus="bus"></child>
<button @click="incrementParentData">
Increment parent data
</button>
</div>
var Child = {
template: '<div>data ref in child: {{ data }}</div>',
props: ['data', 'bus'],
created: function() {
var self = this;
this.bus.$on('parentDataChanged', function(data) {
alert("data ref in child $on handler:" + self.data);
});
}
}
new Vue({
el: '#wrapper',
data: function() {
return {
data: 1,
bus: new Vue()
}
},
components: {
'child': Child
},
methods: {
incrementParentData: function() {
this.data = this.data + 1;
alert("data in parent incremented to:" + this.data);
this.bus.$emit("parentDataChanged", this.data);
}
}
})
并查看较旧的值,而不是正确的增量值。
child
JSFiddle:here
问题:
child
何时会看到更改?$on
处理程序中argument
内的更新值,我该怎么做? PS:我将更改后的值作为$emit
传递给{{1}},但在我的真实案例中,孩子不需要知道父母中哪些数据发生了变化。孩子所要做的就是获取父母的数据并将其传递给后端api。
答案 0 :(得分:2)
问题是当支柱改变时你不需要使用公共汽车来捕捉。
您正在寻找的是观察者,一旦被观看的道具发生变化,它就会被触发。
您可以在vuejs文档中阅读有关观察者的更多信息。
https://vuejs.org/v2/guide/computed.html#Watchers
希望这会对你有所帮助。