Ember.js无法设置ArrayController的内容

Ember.js cannot set content of ArrayController

本文关键字:ArrayController 设置 js Ember      更新时间:2023-09-26

假设我有一个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);
  }
});

以及模型中的查找方法:

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

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

您应该添加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);
  }
});

更新,以回应您的最后一条评论

请参阅此处查看工作演示。

希望能有所帮助。