[英]Global Handlebars template returns a gibberish HTML in meteor
我試圖使用流星的車把幫助器來包含模板。 就像我的index.html
看起來像
<body>
{{> body}}
</body>
<template name="body">
{{include "myTemplate" attr=value}}
</template>
為此,我創建了一個車把助手,如下所示
Handlebars.registerHelper('include', function(templateName, options) {
return Template[templateName]({name: 'stackoverflow'});
});
myTemplate.html
看起來像
<template name="myTemplate">
Hello {{name}}
</template>
我在任何地方都沒有{{> myTemplate}}
。 我的計划是動態注入/渲染它。
因此,當我運行項目時, {{include ...}}
被替換為一些亂碼的html,如下所示。
<$label:RjH4gQSmtStAKKaBv><$data:yBKwgoiiHFTKfMec2>
<$landmark:uRZQ3PShZEQwKngFG><$events:WW5fKkc6G5FYKzNrb>
<$watch:GQg4oHk9CyhMw97v4><$isolate:5gXzmhnr9ZCWtWjTB>Hello stackoverflow</$isolate:5gXzmhnr9ZCWtWjTB>
</$watch:GQg4oHk9CyhMw97v4></$events:WW5fKkc6G5FYKzNrb>
</$landmark:uRZQ3PShZEQwKngFG></$data:yBKwgoiiHFTKfMec2>
</$label:RjH4gQSmtStAKKaBv>
看起來與火花有關。 當我在開發控制台中運行Template.myTemplate({name: 'stackoverflow'})
時,我得到正確的字符串'Hello stackoverflow'
。 我很困惑為什么在幫手內部使用時為什么會給出這些亂碼?
如果要使用助手渲染模板,則需要告訴Meteor不要轉義字符串。 如果轉義,Spark將不會渲染。 這是一項有用的默認功能,它可以防止將任意代碼注入到您的站點中,並且通常可以使呈現的內容清晰可見。
為此,您可以將其寫在模板的三括號中
<template name="body">
{{{include "myTemplate" attr=value}}}
</template>
或在助手中返回SafeString
Handlebars.registerHelper('include', function(templateName, options) {
return new Handlebars.SafeString(Template[templateName]({name: 'stackoverflow'}));
});
在相關說明中, Meteor車把文檔說明了一些助手名稱被保留。 似乎其中不是include
是其中之一,但是您應謹慎使用聽起來像關鍵字的名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.