gpt4 book ai didi

ember.js - ember 数据计算属性不适用于嵌套关联

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

我有一个简单的数据模型:

一条腿,有很多玩家,他们有很多回合:

App.Store = DS.Store.extend({
revision: 11,
adapter: 'DS.FixtureAdapter'
});

App.Leg = DS.Model.extend({
players: DS.hasMany('App.Player'),
turnCount: function() {
var i = 0;
this.get('players').forEach(function(p) {
i+= p.get('turns.length');
});
return i;
}.property('players.@each.turns.length')

});

App.Player = DS.Model.extend({
leg: DS.belongsTo('App.Leg'),
turns: DS.hasMany('App.Turn')
});


App.Turn = DS.Model.extend({
player: DS.belongsTo('App.Player')
});

当我创建新的 Turn 时,计算属性 turnCount 不会自动更新,但它应该会更新,对吗?

/*
* do this on the console to verify
*/

var leg = App.Leg.createRecord();
var player = leg.get('players').createRecord();

leg.get('turnCount');
// => 0
player.get('turns').createRecord();
leg.get('turnCount')
// => 0

更新

看来,如果你坚持一层嵌套,事情就可以了。所以:

.property('players.@each.someProperty') 

只要 someProperty 不是可枚举的,就可以工作。

最佳答案

试试这个:

.property('players.@each.turns.@each')

您还可以使用reduce总计计算方法:

turnCount: function() {
return this.get('players').reduce(function(value, player) {
return value + player.get('turns.length');
}, 0);
}.property('players.@each.turns.@each')

关于ember.js - ember 数据计算属性不适用于嵌套关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14860352/

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