2013-12-19 43 views
0

有什麼方法可以在Meteor中嵌套partials(HTML的片段)?如何在Meteor中嵌入HTML碎片(部分)?

爲什麼我不能說

<template name="foo">hello world!</template> 
<template name="bar">{{> foo}}</template> 
<template name="baz">{{> bar}}</template> 

這是一個非常常見的事情,可以在任何HTML頁面中執行,並且它是小鬍子和把手的常規功能。爲什麼當我嘗試這種方法時,流星默默地失敗?

+1

創建一個新項目,將您的代碼添加到.html文件的底部,將'{{> baz}}'添加到主模板中。一切都按預期工作。我懷疑你的代碼正在發生其他事情。 –

+1

你可以......他們在每個[例子](http://www.meteor.com/examples/leaderboard)中都這樣做。您必須將您的頂級模板放在正文模板中:' {{> baz}}' – sbking

回答

0

要澄清的意思sbking ...

排行榜的例子有一個單一的leaderboard.html文件 https://github.com/meteor/meteor/blob/devel/examples/leaderboard/leaderboard.html

<head> 
    <title>Leaderboard</title> 
</head> 

<body> 
    <div id="outer"> 
    {{> leaderboard}} 
    </div> 
</body> 

<template name="leaderboard"> 
    <div class="leaderboard"> 
    {{#each players}} 
     {{> player}} 
    {{/each}} 
    </div> 

    ... 
</template> 

<template name="player"> 
    ... 
</template> 

但是,這可能因爲流星看着所有的人都被分成許多文件。例如

leaderboard.html將有

<template name="leaderboard"> 
    <div class="leaderboard"> 
    {{#each players}} 
     {{> player}} 
    {{/each}} 
    </div> 
    ... 
</template> 

和player.html將有

<template name="player> 
    ... 
</template> 

,它仍然能工作!!!!黑魔法!

0

完整的Meteor文檔提供了一些非常簡單的例子,它可以在this部分找到,還有一些其他有用的信息可以幫助您開始。基本上,你唯一需要的,以確保你做的是有你的頂級模板包含在<body>標籤內,像這樣:

<body> 
    {{> a}} 
</body> 

<template name="a"> 
    Top-Level Template 
</template> 

然後,你可以窩深,你會從那裏下來喜歡對你最深的模板:

<template name="a"> 
    Top-Level Template 
    {{> b}} 
</template> 

<template name="b"> 
    Mid-Level Template 
    {{> c}} 
</template> 

<template name="c"> 
    ... 
</template> 

而且,你的模板並不需要在同一個HTML文件中定義爲您的<body>定義。它們都可以在同一個文件中定義,或者爲每個模板分成不同的文件(一旦模板變得足夠大而且複雜,這就變得更好了)。