Ember JS,更新不反映在视图中的数组

时间:2013-06-21 19:33:16

标签: ember.js ember-data

更新Ember JS数组未反映在视图中。

控制器

App.MyController = Ember.ArrayController.extend({
  results: [],
  init: function(){
    _this = this
    App.MyModel.find({}).then(function(contents) {
      obj1 = contents.objectAt(0)
      obj1.get('data').hasMany.results.forEach(function(item){
          _this.results.push(item)
      });
    })
    //rest of the code
  }
})

模板

{{#each results}}
  // show items of reults.
{{/each}}

这是我从服务器获取数据的代码片段,在加载时,我将其推入结果数组。 从服务器加载数据需要一些时间,因此模板映射到空结果数组。理想情况下,结果数组应该更新模板中的内容,但逻辑上不应该更新。

有没有人知道我失踪的地方?或做错了。

提前致谢。

2 个答案:

答案 0 :(得分:17)

要使绑定工作,您必须使用pushObject而不是push

App.MyController = Ember.ArrayController.extend({
  results: [],
  init: function(){
    _this = this;
    App.MyModel.find({}).then(function(contents) {
      obj1 = contents.objectAt(0);
      obj1.get('data').hasMany.results.forEach(function(item){
        _this.results.pushObject(item)
      });
    })
    //rest of the code
  }
});

有关ember数组pushObject的更多信息,请参阅here

希望它有所帮助。

答案 1 :(得分:0)

我有类似的问题。问题是Ember没有收到有关阵列变化的通知。在这种情况下,您有一个特殊的Ember函数(pushObject)来替换标准Push,并通知框架更改。但在其他情况下(例如Array.splice),您没有这样的功能,因此您需要手动通知框架。你可以这样做:

this.notifyPropertyChange('array');