Ember.js无法设置ArrayController的内容

时间:2013-08-14 08:41:53

标签: javascript ember.js javascript-framework

假设我有ArrayController

CellarRails.SearchController = Ember.ArrayController.extend({
  content: []
});

SearchRoute

CellarRails.SearchRoute = Ember.Route.extend({
  model: function(params) {
    console.log('MODEL HOOKED!!');
    return CellarRails.Track.find(params);
  }
});

和模型中的find方法:

CellarRails.Track.reopenClass({
  find: function(params) {
    ...
    some code
    ...
    return result;
  }
});

问题:结果数组正常返回,模型钩子被触发,但控制器的内容是未定义的,它的长度是0,所以我做错了什么?

1 个答案:

答案 0 :(得分:3)

您应该添加setupController挂钩并将内容设置为find()操作返回的模型:

CellarRails.SearchRoute = Ember.Route.extend({
  model: function(params) {
    console.log('MODEL HOOKED!!');
    return CellarRails.Track.find(params);
  },
  setupController: function(controller, model) {
    controller.set('content', model);
  }
});

更新,以回应您的上次评论

有关正常工作的演示,请参阅here

希望它有所帮助。