我在流星中有三個簡單模板,服務器上有一個集合,它們的名字組合。我希望能夠根據它們的名稱在Collection中動態呈現這些模板。如何從模板名稱集合渲染流星模板?
目前我正試圖通過使用客戶端來訂閱集合,並通過模板函數來訪問名稱。不幸的是,如果我嘗試在名稱上運行「>」,Meteor會嘗試渲染變量名稱而不是其值。
因此,而不是渲染HTML中模板1,模板2和template3,輸出僅僅是他們的頁面上的名字:「模板1模板2 template3」。
這是我一直在使用的代碼,我希望有一種方法可以解決我的問題,而無需手動運行Meteor.render。
服務器JS:
TemplatesToRender = new Meteor.Collection("templatesToRender");
TemplatesToRender.insert({templateName: "template3"});
TemplatesToRender.insert({templateName: "template2"});
客戶端HTML:
<body>
{{#each templatesToRender}}
{{> templateName}} // meteor trying to render a template
// called "templateName" instead of the
// variable inside templateName.
{{/each}}
</body>
<template name="template1">
<span>Template 1</span>
</template>
<template name="template2">
<span>Template 2</span>
</template>
<template name="template3">
<span>Template 3</span>
</template>
+1偉大的解決方案! – Marc
這就是我正在尋找的,謝謝! –
這裏的問題是內存管理,他重複生成模板,因爲你調用了'Template [name]()'函數。這種方法很好,但在更換時不要正確移除模板。我測試這個,並且在插入和移除幾千個fiv之後,您將獲得50 mb的內存堆疊! –