Руль #если и числовые нули
В моем шаблоне Handlebars я проверяю наличие переменной и визуализирую некоторый текст, если он есть:
{{#if foo}}
some text
{{/if}}
Это прекрасно работает, если foo является текстом или если foo является числовым, но не нулевым. Но если
var foo = 0;
Затем {{#if foo}}
возвращает false.
Это, по-видимому, еще одна странность Javascript, потому что сам Javascript ведет себя точно так же. В коде Javascript, однако, вы можете обойти это, проверив, является ли переменная "неопределенной".
Как я могу сделать то же самое в Руль?
Я мог бы написать {{#exists}}
помощник, но я надеялся, что там что-то встроено.
4 ответа:
Я бы пошел на один лучше и предоставил случай для условия {{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}}
Для этого есть что-то встроенное:
{{#if foo includeZero=true}} foo! {{/if}}
Это отображает
foo!
, Когдаfoo
является0
.
Я просто пошел дальше и написал {{#существует}} помощник. Но если у кого-то есть лучшее решение, пожалуйста, опубликуйте его.
/** * The {{#exists}} helper checks if a variable is defined. */ Handlebars.registerHelper('exists', function(variable, options) { if (typeof variable !== 'undefined') { return options.fn(this); } });