我在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,但我不知道如何用把手做到这一点.
有什么建议??
你通常会做的是在'模型'中使用布尔值.
{
isChecked: true
}
Run Code Online (Sandbox Code Playgroud)
然后
<input type="checkbox" {{bindAttr checked="isChecked"}}>
Run Code Online (Sandbox Code Playgroud)
如果Boolean为true,则它将呈现checked属性,如果Boolean为false,则将省略该属性.所以,如果isChecked是真的,那么Handlebars会输出
<input type="checkbox" checked>
Run Code Online (Sandbox Code Playgroud)
如果isChecked是假的,我们会得到
<input type="checkbox">
Run Code Online (Sandbox Code Playgroud)
这就是我们想要的!
我还写了一个帮手来做这件事.它不使用backbone.js,因此可能是某些选择:
Handlebars.registerHelper('checked', function(currentValue) {
return currentValue == '1' ? ' checked="checked"' : '';
});
Run Code Online (Sandbox Code Playgroud)
用法示例:
<input type="checkbox" name="cbxExample" id="cbxExample" {{checked cbxExample}}/>
Run Code Online (Sandbox Code Playgroud)
如果提供的JSON是:勾选一个复选框:
{"cbxExample" : "1"}
Run Code Online (Sandbox Code Playgroud)
导致:
<input type="checkbox" name="cbxExample" id="cbxExample" checked="checked" />
Run Code Online (Sandbox Code Playgroud)
[我的第一篇文章 - 希望有用!]
| 归档时间: |
|
| 查看次数: |
11701 次 |
| 最近记录: |