【问题标题】:Ember.js cannot set content of ArrayControllerEmber.js 无法设置 ArrayController 的内容
【发布时间】:2013-08-16 02:57:53
【问题描述】:

假设我有一个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,我做错了什么?

【问题讨论】:

    标签: javascript ember.js javascript-framework


    【解决方案1】:

    您应该添加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 以获得工作演示。

    希望对你有帮助。

    【讨论】:

    • 但是model钩子应该在searchRoute的上下文中设置控制器的内容,不是吗?无论如何{{controller.content.length}} 在我的search 模板中显示0,但result arays 的长度是50。附言我不再使用 ember-params 了:)
    • @Nikita,在我的答案中添加了演示,它在示例中有效,您能否将其与您的代码进行比较,可能有什么不同?
    猜你喜欢
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多