gpt4 book ai didi

arrays - 如何观察 Ember.Array 中的嵌套属性

转载 作者:行者123 更新时间:2023-12-01 12:55:01 26 4
gpt4 key购买 nike

假设我有一个模型 Stock,它有多个 StockPartition(它是一个名为 partitions 的属性,它是一个数组)。

Stock 模型有一个属性 usedAmount,当所有 partition.amount 中的任何一个发生变化时,该属性应该发生变化,当然,它也会被更新添加/删除分区时。

示例:

stock.get('usedAmount') -> 0
stock.get('partitions') -> [Class, Class, Class]
stock.get('partitions')[0].set('amount', 12)
stock.get('usedAmount') -> I want here to return 12
stock.get('partitions')[1].set('amount', 12)
stock.get('usedAmount') -> I want here 24

Stock 如何观察每个 partitions.amount?我可以编写一个如下所示的函数 addPartition:

addPartition: function(partition) {
partition.addObserver('amount', function() {
this.get('owner').notifyPropertyChange('usedAmount');
});
}

但我希望有更好的解决方案。

最佳答案

我会利用强大的计算属性。您还可以使用 Ember.Enumerable 上可用的有用方法,请参阅 http://jsfiddle.net/pangratz666/BxyY4/ :

App.partitionsController = Ember.ArrayProxy.create({
content: [],

addPartition: function(amount) {
this.pushObject(Ember.Object.create({
amount: amount
}));
},

usedAmount: function() {
// reduce by adding all 'amount' values, start with initial value 0
return this.reduce(function(previousValue, item) {
return previousValue + item.get('amount');
}, 0);
}.property('@each.amount')
});

reduce 记录在 docs 中.

关于arrays - 如何观察 Ember.Array 中的嵌套属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10285606/

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