我正试图在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未设置。
任何人都可以帮助我吗?
答案 0 :(得分:0)
您需要通过documents
在setupController
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}}属性,该属性不存在。