簡體   English   中英

Global Handlebars模板在流星中返回亂碼的HTML

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM