gpt4 book ai didi

ember.js - 计算属性、数组和 addObject

转载 作者:行者123 更新时间:2023-12-02 06:11:50 27 4
gpt4 key购买 nike

我有一个计算属性,它从另一个属性构建一个数组并返回它。当我用 addObject 更新这个数组时, set显然没有被调用,所以我无法更新原始属性。有没有办法让我也更新 addObject 上的原始属性?或 removeObject ?

在此示例中,我从一串逗号分隔值构建一个数组:

App.MyModel = DS.Model.extend({

someAttribute: DS.attr('string'),

computed: function(key, value) {
var computedArray,
someAttribute;

// getter
if (arguments.length === 1) {
someAttribute = this.get('someAttribute');
computedArray = description.split(',');
return Ember.A(computedArray);
}
// setter
else {
someAttribute = value.join(',');
this.set('someAttribute', someAttribute);
return value;
}
}.property('someAttribute')

});

现在,如果我像这样更新我的计算属性,它会按预期工作:
>>> model.set('computed', ['turtles', 'all', 'the', 'way', 'down'])
['turtles', 'all', 'the', 'way', 'down']
>>> model.get('someAttribute')
"turtles,all,the,way,down"

但是现在如果我这样做,它们(预期)不同步:
>>> model.get('computed').addObject('oh yeah')
['turtles', 'all', 'the', 'way', 'down', 'oh yeah']
>>> model.get('someAttribute')
"turtles,all,the,way,down"

概括我的问题:当计算属性是可变的时,是否可以使计算属性与用于计算它的属性保持同步?如果没有,是否有数组 ( Ember.A()) 的解决方法?

我是 Ember 的新手,引擎盖下可能发生了一些我还不知道的事情,但请赐教;)

最佳答案

这可能是设计使然,因为默认情况下计算的属性也被缓存。因此,即使您设法使其正常工作,对此类属性的绑定(bind)也会有问题。

不过,您可能有一些运气设置辅助 observes然后监视计算属性的函数。您还需要使用固定数组来支持您的计算属性,这与您在每个 getter 上返回的新数组不同。

除非它很重要,否则我会避免违反 Ember 约定。

“如果一旦你开始走上黑暗的道路,它将永远主宰你的命运”:)

关于ember.js - 计算属性、数组和 addObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17340188/

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