我有一个动态控制器属性,如果关系计数低于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

我不确定应该怎么做,显然我做的不正确。

演示:http://emberjs.jsbin.com/yegiku/2/edit

最佳答案

看一下the docs for @each-这是一个特殊的关键字,它观察数组的特定变化。

在您的情况下,使用以下命令将起作用(观察者仅在添加记录或从数组中删除记录时才触发):

alienCountBelow5: function() {
  return this.get('model').get('aliens.length') < 5;
}.property('aliens.[]'),

09-19 15:08