Ember RSVP Hash不更新控制器内容

时间:2014-02-27 22:51:26

标签: javascript ember.js

我正试图在Ember的一条路线上处理多个控制器。 This response似乎是要走的路,但我很难让它发挥作用。这是一个无法工作的简单示例:

App.IndexRoute = Ember.Route.extend({
  model: function() {
    myData = [1,2,3];

    return Em.RSVP.hash({
      docs1: myData,
      docs2: myData
    });    
  },
  setupController: function(controller, model) {
    controller.set('model', model.docs1);    
    this.controllerFor('documents').set('model', model.docs2);
  }
});

App.DocumentsController = Ember.ArrayController.extend({
  count: function() {
    return this.get('length');
  }.property('@each'),  
});

App.IndexController = Em.ArrayController.extend({  
  count: function() {
    return this.get('length');
  }.property('@each'),  
});

一个显示结果的JSBin:

http://jsbin.com/wavigada/1/edit

您可以看到IndexController报告的正确计数为3,但DocumentsController未设置。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您需要通过documentssetupController IndexController中添加needs控制器,其内容位于App.IndexController = Em.ArrayController.extend({ needs: ['documents'], count: function() { return this.get('length'); }.property('@each'), }); 中。

<script type="text/x-handlebars" data-template-name="index">
  {{count}}
  {{render 'documents' controllers.documents}}
</script>

然后您需要将模板更改为:

{{render 'documents' controllers.documents}}

请注意,只是将documents(正如您在问题中所做的那样)引用当前模型的{{1}}属性,该属性不存在。

请参阅:http://jsbin.com/wavigada/6/