2014-10-19 116 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