在我的Handlebars模板中,我检查了一个变量的存在,并在其中显示一些文本:
- {{#if foo}}
- some text
- {{/if}}
如果foo是文本,或者如果foo是数字但不是零,这可以正常工作.但如果
- var foo = 0;
那么{{#if foo}}返回false.
这似乎是另一个JavaScript的奇怪,因为Javascript本身的行为方式相同.但是,在Javascript代码中,您可以通过检查变量是否为“undefined”来解决此问题.
如何在Handlebars中做同样的事情?
我可以写一个{{#exists}}帮手,但我希望有一些内置的东西.
解决方法
我会更好一点,为{{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}}