2013-12-16 46 views
0

我已經建立了一個路線流星鐵路由器不插入模板到正確的佈局

this.route('force', { 
path: '/force', 
template: 'showForce', 
layoutTemplate: 'mainpanel' 
}); 

showForce模板非常簡單

<template name="showForce"> 
    <p>show force</p> 
</template> 

因爲是mainPanel模板

<template name="mainpanel"> 
    {{ yield }} 
</template> 

但該模板有這樣的父親

<template name="page_logged_in"> 
    {{> header}} 

    <div id="side-panel"> 
    {{> sidepanel}} 
    </div> 

    <div id="main-panel"> 
    {{> mainpanel}} 
    </div> 
</template> 

路由確實將模板呈現給頁面,但不在yield位置。它顯示爲page_logged_in模板的DOM兄弟。

任何想法爲什麼會發生這種情況?

感謝

+0

更新的要點在這裏https://gist.github.com/ConnorAtherton/8033276 –

回答

1

鐵路路由器習慣了有點棘手。您應該使用命名的yield特性,並讓Iron Router放入模板,而不是嘗試插入{{> templateName}}。我創建了一個基於你的代碼的演示回購,以展示如何實現你想要的結果,它位於這裏:https://github.com/copleykj/ConnorAtherton

+0

感謝幫忙的人,我現在開始真正理解它是如何工作的。它非常接近完美的工作,但我怎樣才能將它連接起來,以便我的子模板被渲染到mainPanel中。我在GitHub上添加了一個評論,顯示模板應該放在哪裏。再次感謝@凱利 –

0

不要忘記做你的路由器的配置也

Router.configure({ 
    layoutTemplate: 'mainpanel' 
}); 

您的路線也應該是這樣的

this.route('showForce', { 
    path: '/force', 
    layoutTemplate: 'mainpanel' 
}); 

「模板」應該是第一個參數。沒有layoutTemplate配置我認爲鐵路由器使用身體作爲收益率,這就是爲什麼你可能會看到dom流離失所。

+0

添加了所有這些,但路由器仍在使用身體屈服。這是我還沒有解決的第一個流星問題。關於我們接下來可以嘗試的任何建議? –

+0

你的index.html是什麼樣的? – Akshat

+0

http://jsfiddle.net/zencoder/G243L/ –