我正在寻找一种方法来更改车把的if
助手的工作方式。
Mandrill已将a few modifications设置为标准的把手。这些方便的更改之一是它们处理车把的if
阻止助手的方式。他们增加了在if
帮助器中求值表达式的功能,如下所示:
{{#if `purchases > 3`}}
我需要能够在本地编译Mandrill模板,以进行测试和预览,而此功能使它变得困难。我知道我可以编写自己的自定义助手,但是在这种情况下,我正在寻找一种方法来更改内置if
助手的工作方式。
我想我可以构建自己的Handlebars版本。
还有其他建议吗?
答案 0 :(得分:0)
只要您的工作正常,我认为重新定义标准助手没有问题。您将在下面的代码段中找到一个示例,该示例覆盖了if帮助程序,而不是文本。因此,只需注册您自己的帮助程序,它将覆盖默认的帮助程序。如果您希望{{else}}也能正常工作,则必须在if帮助程序代码中进行处理。
$(document).ready(function () {
var context = {
"textexample1" : "hello",
};
Handlebars.registerHelper('if', function(text) {
return new Handlebars.SafeString(text);
});
var source = $("#sourceTemplate").html();
var template = Handlebars.compile(source);
var html = template(context);
$("#resultPlaceholder").html(html);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.5/handlebars.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script id="sourceTemplate" type="text/x-handlebars-template">
{{#if 'test override'}}
{{textexample1}}
{{/if}}
</script>
<br/>
<div id="resultPlaceholder">
</div>