Javascript 在#if语句中使用helper函数的Handlerbars.js
使用,我想根据生成的json显示两个html块 假设我想感谢我的用户在我的商店订购商品。 我像这样编写handlerbars.js模板:Javascript 在#if语句中使用helper函数的Handlerbars.js,javascript,templating,mustache,Javascript,Templating,Mustache,使用,我想根据生成的json显示两个html块 假设我想感谢我的用户在我的商店订购商品。 我像这样编写handlerbars.js模板: <p>{{name}}</p> {{#if costIsZero}} Can't find any order {{else}} You bought {{cost}} items in our shop, thanks. {{/if}} Handlebars.registerHelper('costIsZero', fu
<p>{{name}}</p>
{{#if costIsZero}}
Can't find any order
{{else}}
You bought {{cost}} items in our shop, thanks.
{{/if}}
Handlebars.registerHelper('costIsZero', function(){
return this.cost == 0
});
当我将其与以下json数据混合时:
var data = {
"name":"foo",
"cost": 9
};
无论“成本”的值是多少,{{如果成本为零}}似乎总是正确的。
如果我注释掉helper本身,因此没有任何代价为零,那么它总是返回false
上面的所有代码都可以作为JSFiddle使用
我做错了什么
也许我在劫持Handlebar.js的工作方式,但在这种情况下,我应该如何使用Handlebar.js实现我的功能?试试以下方法:
Handlebars.registerHelper('if', function(conditional, block) {
if(this.cost == 0) {
return block(this);
} else {
return block.inverse(this);
}
})
试试这个:
Handlebars.registerHelper('if', function(conditional, block) {
if(this.cost == 0) {
return block(this);
} else {
return block.inverse(this);
}
})
在计算表达式(如
costIsZero
时,不会调用帮助程序
如果,您可以创建一个自定义帮助器,作为的替代方案:
handlebar.registerHelper('ifCostIsZero',函数(块){
如果(this.cost==0){
返回块(本);
}否则{
返回块。反向(此);
}
});
您会像这样使用它:
{{{#如果成本为零}
找不到订单
{{else}
你在我们店里买了{{cost}}件商品,谢谢。
{{/ifCostIsZero}
或者,您可以使用股票if
(或除非
),因为您的测试是针对零的:
{{{#如果成本}
你在我们店里买了{{cost}}件商品,谢谢。
{{else}
找不到订单
{{/if}
您可以在处同时使用这两个选项。在计算表达式(如costIsZero
时,不会调用帮助程序
如果
,您可以创建一个自定义帮助器,作为的替代方案:
handlebar.registerHelper('ifCostIsZero',函数(块){
如果(this.cost==0){
返回块(本);
}否则{
返回块。反向(此);
}
});
您会像这样使用它:
{{{#如果成本为零}
找不到订单
{{else}
你在我们店里买了{{cost}}件商品,谢谢。
{{/ifCostIsZero}
或者,您可以使用股票if
(或除非
),因为您的测试是针对零的:
{{{#如果成本}
你在我们店里买了{{cost}}件商品,谢谢。
{{else}
找不到订单
{{/if}
您可以在上使用这两个选项,只需一个小评论。块(此)不再有效。您必须使用block.fn(this);只是一个小评论。块(此)不再有效。您必须使用block.fn(this);