0

我有一个控制器,它使用content作为基础,然后有另一个变量称为items内容的过滤版本。items更新时应该content更新。我尝试在我的控制器中做这样的事情:

updateItems: function() {
  var items = this.get('content').filter(this.get('toggleFilter'));
  this.set('items', items);
}.observes('toggleFilter', 'content'),

这很好用,除了第一次加载。首次浏览页面时,项目为空。我认为这是因为在 setupController 中它设置content为仍在等待信息。

我注意到将观察设置为content.length使其工作。但是,这并不理想,部分原因updateItems是加载数据时每次插入都会调用该方法,还因为内容可能会更改,但长度可能保持不变。有一个更好的方法吗?

4

1 回答 1

2

@each是你要找的

updateItems: function() {
  var items = this.get('content').filter(this.get('toggleFilter'));
  this.set('items', items);
}.observes('toggleFilter', 'content.@each'),

此外,您可以按如下方式使用计算属性

items: function(){
  return this.get('content').filter(this.get('toggleFilter'));
}.property('content.@each', 'toggleFilter')

isLoaded

items: function(){
  return this.get('content').filter(this.get('toggleFilter'));
}.property('content.isLoaded', 'toggleFilter')
于 2013-06-05T10:06:38.317 回答