我想渲染2个项目列表,这两个模板都是模型each
。
我尝试首先渲染主模板,然后将嵌套的模板渲染到主模板的某些命名插座中,这样可以工作。
但是当我尝试给嵌套的模型一个不同的模型(它们都使用不同的模型数组)时,我收到一个错误:
The value that #each loops over must be an Array.
You passed '<DS.PromiseArray:ember451>' (wrapped in (generated homepage controller))
以下是代码:
renderTemplate:function(){
this.render('homepage');
this.render('roomlist',{
'into':'homepage',
'outlet':'roomlist',
'model':this.store.find('room')
});
this.render('activitylist',{
'into':'homepage',
'outlet':'activitylist',
'model':this.store.find('activity')
});
}
编辑:
我有的另一个想法是在模型挂钩中使用{{render "roomlist" rooms}}
之后的this.set("rooms", this.store.find("room");
而不是renderTemplate-hook。但它几乎犯了同样的错误:
The value that #each loops over must be an Array.
You passed (generated roomlist controller)
答案 0 :(得分:1)
您应该解决将在model
挂钩中使用的模型,然后您可以更轻松地在模板中使用它们:
类似的东西:
model: function() {
return Ember.RSVP.hash({
rooms: this.store.find('room'),
activities: this.store.find('activity')
});
},
setupController: function(controller, model) {
this.set('rooms', model.rooms);
this.set('activities', model.activities);
controller.set('model', model.rooms);
},
renderTemplate: function(){
this.render('homepage');
this.render('roomlist',{
'into':'homepage',
'outlet':'roomlist',
'model':this.get('rooms')
});
this.render('activitylist',{
'into':'homepage',
'outlet':'activitylist',
'model':this.get('activities')
});
}