在我的Handlebars模板中,我检查是否存在变量,并在其中显示一些文本:
{{#if foo}}
some text
{{/if}}
如果foo是文本或foo是数字但不是零,这可以正常工作。但是如果
var foo = 0;
然后{{#if foo}}
返回false。
这似乎是另一个Javascript怪异,因为Javascript本身的行为方式相同。但是,在Javascript代码中,您可以通过检查变量是否为“未定义”来解决此问题。
如何在Handlebars中做同样的事情?
我可以写一个{{#exists}}
助手,但我希望有内置的东西。
答案 0 :(得分:27)
内置了一些内容:
{{#if foo includeZero=true}}
foo!
{{/if}}
当foo!
为foo
时,会显示0
。
答案 1 :(得分:17)
我会更好地为{{else}}条件提供案例......
/**
* The {{#exists}} helper checks if a variable is defined.
*/
Handlebars.registerHelper('exists', function(variable, options) {
if (typeof variable !== 'undefined') {
return options.fn(this);
} else {
return options.inverse(this);
}
});
现在你可以:
{{#exists myvar}}
<p>Value of myvar is ... {{myvar}}</p>
{{else}}
<p>Please supply a myvar</p>
{{/exists}}
答案 2 :(得分:1)
我刚开始写了一个{{#exists}}帮助器。但如果有人有更好的解决方案,请发布。
/**
* The {{#exists}} helper checks if a variable is defined.
*/
Handlebars.registerHelper('exists', function(variable, options) {
if (typeof variable !== 'undefined') {
return options.fn(this);
}
});
答案 3 :(得分:0)
如果有人收到此错误“期待'ID','数据',使用@Shane方法获得'SEP'”确保您没有空格:
{{ /exist }}
并改为:
{{/exist}}