Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 烬数据计算属性不适用于嵌套关联_Ember.js_Ember Data - Fatal编程技术网

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

Ember.js 烬数据计算属性不适用于嵌套关联,ember.js,ember-data,Ember.js,Ember Data,我有一个简单的数据模型: 一条腿,有很多运动员,他们有很多转弯: 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').forEa

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

一条腿,有很多运动员,他们有很多转弯:

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')
});
当我创建一个新的回合时,计算属性
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')
您还可以使用该方法计算总计:

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