Vue2:关于数据绑定,何时引用更新?

时间:2017-12-30 07:04:44

标签: vue.js

我有parent Vue中的数据,该数据作为prop传递到child视图。如果父项中的数据发生了变化,那么child究竟何时会看到此更改?

我发现这不是瞬间的。

在下面的片段中,我将父母的data作为prop传递给child。然后data中的parent会增加,event会通过childbus广播到childparent会读取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

问题:

  1. child何时会看到更改?
  2. 如何查看$on处理程序中argument内的更新值,我该怎么做?
  3. PS:我将更改后的值作为$emit传递给{{1}},但在我的真实案例中,孩子不需要知道父母中哪些数据发生了变化。孩子所要做的就是获取父母的数据并将其传递给后端api。

1 个答案:

答案 0 :(得分:2)

问题是当支柱改变时你不需要使用公共汽车来捕捉。

您正在寻找的是观察者,一旦被观看的道具发生变化,它就会被触发。

您可以在vuejs文档中阅读有关观察者的更多信息。

https://vuejs.org/v2/guide/computed.html#Watchers

希望这会对你有所帮助。