5

更新 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}}

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

有没有人知道我在哪里失踪?或做错事。

提前致谢。

4

2 回答 2

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请参见此处

希望能帮助到你。

于 2013-06-21T20:44:46.887 回答
1

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

this.notifyPropertyChange('array');
于 2017-07-27T13:58:27.000 回答