Javascript 车把辅助工具无法正常工作
我创建了一个如下所示的把手辅助对象Javascript 车把辅助工具无法正常工作,javascript,html,handlebars.js,Javascript,Html,Handlebars.js,我创建了一个如下所示的把手辅助对象 Handlebars.registerHelper("format_currency", function(value, currency){ var symbol = ""; if(currency === "EUR") symbol = "€"; else if ... // other code here return value + " " + symbol; }); 我用下面的方式 {{for
Handlebars.registerHelper("format_currency", function(value, currency){
var symbol = "";
if(currency === "EUR") symbol = "€";
else if ... // other code here
return value + " " + symbol;
});
我用下面的方式
{{format_currency amount currency}}
当我运行应用程序时,value字段具有正确的值(比如1.5),而对象中的货币散列了其中的散列属性。为什么?在这里,我希望我传入的货币(比如“欧元”)
我错过什么了吗?谢谢。我不知道“内部散列散列属性的对象”是什么意思,但我发现您的助手(或您使用它的方式)存在一个问题,这会使它产生奇怪的结果
当您使用{…}
时,Handlebar需要纯文本,因此它将对其进行HTML编码。因此,如果您的符号
最终为“€;”
,则符号将采用HTML编码,您将获得€代码>已添加到模板中,而不是欧元符号的Unicode实体
有几种方法可以解决这个问题
三重储藏
解决编码问题的一种方法是在模板中使用三重隐藏来禁用HTML编码:
{{{format_currency amount currency}}}
演示:
纯Unicode
另一种方法是放弃实体而使用原始Unicode Euro字符:
if(currency === "EUR")
symbol = '€';
那么你就不必担心双重隐藏、三重隐藏、HTML编码或
演示:
安全绳
另一种方法是返回一个而不是字符串
:
车把不会从车把安全字符串中退出。如果您编写的帮助程序生成自己的HTML,通常需要返回一个新的handlebar.SafeString(result)
因此,您的助手中包含以下内容:
return new Handlebars.SafeString(value + " " + symbol);
演示:谢谢+1.感谢您的支持。这句话的意思是货币价值没有被正确解读。正确导出值时,不会将货币导出到任何位置。handlebar作为第二个参数,创建内部带有散列的空对象。有什么建议吗?您是否在助手中执行了console.log(arguments)
以查看真正传递的内容?您使用的是旧版本的把手吗?你和我的小提琴有什么不同?