Javascript 余烬:连接嵌套路由

Javascript 余烬:连接嵌套路由,javascript,ember.js,Javascript,Ember.js,我试图找出如何将一个简单的模型连接到资源中嵌套的路由。我很困惑,因为余烬检查员说它正在寻找DesktopMessageRoute和DesktopMessageController。。。但是消息模板只响应MessageController/message_controller.js,我尝试了文件名和位置的每一种组合,都将桌面附加到消息中,而不是。我错过了什么 路由器.js EmberApp.Router.map(function () { this.resource('desktop', fu

我试图找出如何将一个简单的模型连接到资源中嵌套的路由。我很困惑,因为余烬检查员说它正在寻找DesktopMessageRoute和DesktopMessageController。。。但是消息模板只响应MessageController/message_controller.js,我尝试了文件名和位置的每一种组合,都将桌面附加到消息中,而不是。我错过了什么

路由器.js

EmberApp.Router.map(function () {
  this.resource('desktop', function(){
    this.route('message');
  });
});
desktop_route.js

var room = {
  roomName: "room",
  users: ["me","you"]
}

EmberApp.DesktopRoute = Ember.Route.extend({

  model: function(params) {
    return room;
  },

  renderTemplate: function(){
    this.render();
    this.render('message', {
      into: 'desktop',
      outlet: 'message'
    })
  }
});
routes/message_route.js

var messages = [{text: "hey"},{text: "yo"}]

EmberApp.MessageRoute = Ember.Route.extend({
  model: function(){
    return messages;
  }
});
模板/desktop.hbs

{{outlet message }}
模板/message.hbs

   {{#each}}
      {{ text }}
   {{/each}}
您应该有一个DesktopMessageRoute,如:

您可以从DesktopRoute中删除renderTemplate方法,只需在desktop.hbs中保留{{outlet}}

这应该是您的桌面/messge.hbs:


查看此项了解其工作原理。

我实际上在桌面模板中使用了多个插座,因此我认为这是必要的?我只是为了节省空间而忽略了它们。Ember根据路径呈现正确的模板,如果路径是host.com/messages,它将呈现消息模板,使用消息路由、控制器和模型。除非这是您想要的,否则可以使用renderTemplate以不同的路径渲染模板。
EmberApp.DesktopMessageRoute = Ember.Route.extend({
  model: function(){
    return messages;
  }
});
 {{#each message in model}}
  <li>{{ message.text }}</li>
 {{/each}}