2015-07-01 42 views
0

假設我有一個Meteor模板,我想在其他Meteor模板中使用。流星/火焰模板中的過濾變量

<template name="helpsout"> 
    <p><b>{{text}}</b></p> 
</template> 

假設我想從另一個調用模板needshelp那得到的字符串arr作爲一個輔助的數組這個幫手,我想調用的arr各元素helpsout模板,但在修改先說前面加上「這需要幫助:「。我想寫的東西是這樣的:

<template name="needshelp"> 
    {{#each arr}} 
     {{> helpsout text="this needs help: {{this}}"}} 
    {{/each}} 
</template> 

{{this}}不插和它結束了設置text字面"this needs help: {{this}}"

有沒有辦法將helpsout的內容直接複製到needshelp? (你可以想象,helpsout實際上是一個複雜的模板,被其他幾個模板使用,所以我們不想將它複製到它使用的每個地方。)似乎有子表達會做到這一點,但AFAIK這不是目前在Meteor支持。

回答

1

你有兩個選擇:

前綴是常見

如果它在你的應用程序的通用模式是helpsout應該帶有某種一些前綴文本一起正文的叫,我將修改的helpsout上下文,使得它需要一個body和可選prefix像這樣:

<template name="needshelp"> 
    {{#each arr}} 
    {{> helpsout prefix="this needs help: " body=this}} 
    {{/each}} 
</template> 
Template.helpsout.helpers({ 
    text: function() { 
    return (this.prefix || '') + this.body; 
    } 
}); 

前綴是少見

如果您希望保留你的代碼,因爲它是在不改變helpsout那麼你可以使用一個額外的輔助您的needshelp模板設置上下文:

<template name="needshelp"> 
    {{#each arr}} 
    {{> helpsout text=helpText}} 
    {{/each}} 
</template> 
Template.needshelp.helpers({ 
    helpText: function() { 
    return "this needs help: " + this; 
    } 
}); 
+0

謝謝大衛。所以如果我理解正確,就不可能做類似「前綴不常見」的方法,而是將所有文本(即前綴)留在模板文件中?爲了分離問題,我希望不要把這個前綴放到幫助者手中。 – DX2003

+0

不幸的是,你不能在設置上下文時進行字符串插值或其他任意的js代碼。 –