gpt4 book ai didi

javascript - Handlebars.js 在 #if 语句中使用辅助函数

转载 作者:行者123 更新时间:2023-11-30 09:01:55 26 4
gpt4 key购买 nike

handlebars.js我想根据生成的 json 显示两个 html block 。

假设我想感谢我的用户在我的商店订购商品。我这样写我的 handlerbars.js 模板:

<p>{{name}}</p>
{{#if costIsZero}}
Can't find any order
{{else}}
You bought {{cost}} items in our shop, thanks.
{{/if}}

我正在像这样为 costIsZero 编写一个简单的助手:

Handlebars.registerHelper('costIsZero', function(){
return this.cost == 0
});

当我将它与以下 json 数据混合时:

var data = {
"name":"foo",
"cost": 9
};

无论“成本”的值是什么,{{#if costIsZero}} 似乎总是正确的。如果我注释掉 helper 本身,因此 costIsZero 没有任何内容,它总是返回 false。

上面的所有代码都可以作为 JSFiddle 获得 http://jsfiddle.net/gsSyt/

我做错了什么?

也许我劫持了 handlebars.js 的工作方式,但在那种情况下,我应该如何使用 handlebars.js 实现我的功能?

最佳答案

在评估诸如 costIsZero 的表达式时,不会调用帮助程序。

您可以创建一个自定义助手来替代 if:

Handlebars.registerHelper('ifCostIsZero', function(block) {
if (this.cost == 0) {
return block(this);
} else {
return block.inverse(this);
}
});

你会这样使用:

{{#ifCostIsZero}}
Can't find any order
{{else}}
You bought {{cost}} items in our shop, thanks.
{{/ifCostIsZero}}

或者,您可以使用股票 if(或 unless),因为您的测试是针对零的:

{{#if cost}}
You bought {{cost}} items in our shop, thanks.
{{else}}
Can't find any order
{{/if}}

您可以在 http://jsfiddle.net/gsSyt/41/ 中使用这两个选项

关于javascript - Handlebars.js 在 #if 语句中使用辅助函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8554517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com