2014-10-19 114 views
0

我想弄清楚如何获得一个简单的模型连接到嵌套在资源中的路线。我很困惑,因为该ember检查员说,它正在寻找DesktopMessageRoute和DesktopMessageController ...但消息模板只响应MessageController(controllers/message_controller.js),我已经试过每个组合的文件名和位置与桌面附加到消息并不是。我错过了什么?灰烬:连接嵌套的路线

router.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' 
    }) 
    } 
}); 

路由/ 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}} 

回答

0

你应该有一个像DesktopMessageRoute

EmberApp.DesktopMessageRoute = Ember.Route.extend({ 
    model: function(){ 
    return messages; 
    } 
}); 

您可以从DesktopRoute删除renderTemplate方法和刚刚离开{{outlet}}desktop.hbs

,这应该是你的desktop/messge.hbs

{{#each message in model}} 
    <li>{{ message.text }}</li> 
{{/each}} 

看到这个JSBin,看看它是如何工作的。

+0

我实际上在桌面模板中使用多个插座,所以我认为这是必要的?我只是把它们留出来以节省空间。 – AllTheTime 2014-10-20 00:15:29

+0

Ember根据路径呈现正确的模板,如果路径是host.com/messages,则呈现消息模板,使用消息路由,控制器和模型。除非这是您想要的,否则您可以使用renderTemplate在不同路径中呈现模板。 – quaertym 2014-10-20 00:18:22