Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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
Javascript Ember.js:属性更改时未调用控制器属性_Javascript_Ember.js - Fatal编程技术网

Javascript Ember.js:属性更改时未调用控制器属性

Javascript Ember.js:属性更改时未调用控制器属性,javascript,ember.js,Javascript,Ember.js,我有一个动态控制器属性,如果关系计数低于5,它将返回布尔值: alienCountBelow5: function() { return this.get('model').get('aliens').content.length < 5; }.property('aliens'), 当我创建了一个新记录时,我在对象上使用pushObject 我不确定该怎么做,显然我做得不对 演示:看一看-这是一个特殊的关键字,用于观察数组的特定更改 在您的情况下,使用以下方法将起作用(仅当在阵列中

我有一个动态控制器属性,如果关系计数低于5,它将返回布尔值:

alienCountBelow5: function() {
  return this.get('model').get('aliens').content.length < 5;
}.property('aliens'),
当我创建了一个新记录时,我在
对象上使用
pushObject

我不确定该怎么做,显然我做得不对

演示:

看一看-这是一个特殊的关键字,用于观察数组的特定更改

在您的情况下,使用以下方法将起作用(仅当在阵列中添加或删除记录时,观察者才会激发):

alienCountBelow5:function(){
返回此.get('model').get('异形.length')<5;
}.property(‘外国人【】’),

alienCountBelow5
应在
App.Item
中定义计算属性。并将模板更改为
{{item.alienCountBelow5}
。我已经更新了你的密码

注意:很遗憾,我无法让它工作,它抛出了一个错误:
无法读取未定义的属性“resolve”
。它应该能工作,因为它和这个一样。但是你应该了解这个想法,解决这个问题。如果你使用


外星人:DS.hasMany('alien',{async:true})
它可以正常工作。

它似乎不起作用。根据您的建议更新
alienCountBelow5
后,我收到一个错误“无法读取未定义的属性'resolve'”。然后我尝试将
{async:true}
添加到关系中,但当时我的状态是:好的,现在我看到了您的代码,我明白了。它不起作用的原因是因为您的
模型
是一个记录数组,因此在
ArrayController
上放置一个计算属性是没有用的。相反,我将该属性放在您的模型上(如果您不认为这是与模型相关的逻辑,也可以将其放在
ItemController
上)。看这里:是的,我知道了。感谢您提供有关
ArrayController
ItemController
的示例!啊哈,所以差异制造者是在模型上做的:但是我以为控制器是用来装饰模型的,那么这里的交易是什么呢?这是在我的模型光学装饰中。Ye但是
alienCountBelow5
是单个项目模型的属性,您的控制器是一个
ArrayController
,也就是说,它适用于所有项目模型。如果您有一个项目控制器,这是最优的,然后您就可以有装饰器了。@Ronniegeris我没有得到您的jsbin,您编辑了它吗,您是否设法让它工作了?
App.Item = DS.Model.extend({
  name: DS.attr(),
  aliens: DS.hasMany('alien')
});
alienCountBelow5: function() {
  return this.get('model').get('aliens.length') < 5;
}.property('aliens.[]'),