Использование ручек bindAttr для флажка
Я использую handlebars в приложении backbone.js rails, и у меня есть логическое поле, которое я заполняю флажком.
Когда я загружаю страницу редактирования, форма заполняется содержимым с сервера JSON что-то вроде
{id:3,user:'test',checkbox:1}
теперь в моей форме дескриптора, я хочу показать, что флажок равен 1.
< input type="checkbox" name="checkbox" value="1" {{#if checkbox}} {{bindAttr checkbox checked="isSelected"}}{{/if}} >
но это не возвращает установленный флажок. Мне бы очень хотелось просто сказать if checkbox==1
, но я не вижу, как я могу это сделать с помощью рулей.
Anysuggestions??
Ответы
Ответ 1
То, что вы обычно делаете, использует логическое значение в "модели".
{
isChecked: true
}
а затем
<input type="checkbox" {{bindAttr checked="isChecked"}}>
Если логическое значение true, оно отобразит свойство checked
, и если логическое значение false, оно опустит свойство. Поэтому, если isChecked
истинно, тогда Handlebars выдаст
<input type="checkbox" checked>
и если isChecked
были ложными, мы получили бы
<input type="checkbox">
Это то, что мы хотим!
Ответ 2
Я также написал помощника, чтобы сделать это. Он не использует backbone.js, поэтому может быть альтернативой для некоторых:
Handlebars.registerHelper('checked', function(currentValue) {
return currentValue == '1' ? ' checked="checked"' : '';
});
Пример использования:
<input type="checkbox" name="cbxExample" id="cbxExample" {{checked cbxExample}}/>
Отметьте флажок, если поставляемый JSON был:
{"cbxExample" : "1"}
Результат:
<input type="checkbox" name="cbxExample" id="cbxExample" checked="checked" />
[мой первый пост - надеюсь, что это полезно!]
Ответ 3
В результате я использовал помощник руля.