我有一个动态控制器属性,如果关系计数低于5,则返回布尔值
alienCountBelow5: function() {
return this.get('model').get('aliens').content.length < 5;
}.property('aliens'),
但即使我已指定它应监视aliens
的更改,但当我向关系添加新记录时它不会改变。
这是模型:
App.Item = DS.Model.extend({
name: DS.attr(),
aliens: DS.hasMany('alien')
});
我在创建新记录时在pushObject
对象上使用aliens
。
我不确定应该怎么做,显然我没有正确地做到这一点。
答案 0 :(得分:1)
alienCountBelow5
内定义 App.Item
计算属性。并将模板更改为{{item.alienCountBelow5}}
。我已更新了您的jsfiddle。
注意:遗憾的是我无法使其正常工作,它会抛出错误:Cannot read property 'resolve' of undefined
。它应该工作,因为它与此answer相同。但你应该明白这个想法并解决问题。如果你使用
aliens: DS.hasMany('alien', {async: true})
它有点工作。
答案 1 :(得分:0)
查看the docs for @each
- 这是一个特殊的关键字,可以观察到数组的特定更改。
在您的情况下,使用以下方法将起作用(观察者仅在记录添加或从数组中移除时才会触发):
alienCountBelow5: function() {
return this.get('model').get('aliens.length') < 5;
}.property('aliens.[]'),