gpt4 book ai didi

ember.js - 如果连续更改两次,则观察到的计算属性不会触发

转载 作者:行者123 更新时间:2023-12-01 02:37:52 24 4
gpt4 key购买 nike

我有一个 Ember.Object,我正在使用如下所示的属性进行更新,但是如果我连续更改 primaryDemo 两次,它不会触发,但是如果我更改 primaryDemo,然后更改 Rate,它确实会更改。我很困惑为什么会这样以及我如何解决它。

dependantChanged: function() {
console.log('Firing change');
this.get('_update')(this);
}.observes('primaryDemo', 'Rate', 'Totals'),

更新 :所以第一个答案和 fiddle 让我思考问题是什么,这是由于更改了对象的属性而不是对象本身。我认为 ember 会进行哈希检查以查看是否存在差异。就我而言,我已经在使用 underscorejs,所以我只更改属性,然后在设置之前使用 _.clone(demo)。我宁愿不这样做,所以在关闭它之前会等待看看是否有更优雅的解决方案。

最佳答案

您不需要设置 primaryDemo再次。在 example那什么都不做。你需要强制告诉 Ember 通知你的观察者。 See this fiddle ...

var demo = { Imps: 1, Demo: { Id: 2 } }

var obj = Ember.Object.create({
dependantChanged: function() {
console.log('Firing change');
}.observes('primaryDemo', 'Rate', 'Totals'),
});

obj.set('primaryDemo', demo);
demo.Imps = 2;
obj.set('primaryDemo', demo);

// Notify observers on obj#primaryDemo
Ember.notifyObservers(obj, 'primaryDemo');

关于ember.js - 如果连续更改两次,则观察到的计算属性不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9445676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com