使用把手绑定Attr复选框

时间:2012-01-30 13:18:09

标签: handlebars.js

我在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 ??

3 个答案:

答案 0 :(得分:9)

你通常会做的是在'模型'中使用布尔值。

{
    isChecked: true
}

然后

<input type="checkbox" {{bindAttr checked="isChecked"}}>

如果Boolean为true,则呈现checked属性,如果Boolean为false,则省略该属性。因此,如果isChecked为真,那么Handlebars将输出

<input type="checkbox" checked>

如果isChecked是假的,我们会得到

<input type="checkbox">

我们想要的是什么!

答案 1 :(得分:8)

我还写了一个帮手来做这件事。它不使用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" />

[我的第一篇文章 - 希望有用!]

答案 2 :(得分:-7)

我最终使用了一个把手助手。