在Ember.js中将具有不同模型的模板渲染到指定的插座中

时间:2014-10-28 18:52:39

标签: javascript ember.js ember-data

我想渲染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) 

1 个答案:

答案 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')
  });
}