2013-02-13 82 views
3

工作不計算物業我有一個簡單的數據模型:燼數據嵌套協會

腿,有很多球員,誰都有多次轉折:

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('[email protected]') 

}); 

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') 
}); 

計算的財產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 

UPDATE

看來,如果你堅持的東西嵌套一層只是工作。所以:

.property('[email protected]') 

工作,只要someProperty不是Enumerable。

回答

0

試試這個:

.property('[email protected]@each') 

您也可以使用reduce方法來計算總計:

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