Backbone.js - 检查复选框的最佳方法是什么

rea*_*ers 9 backbone.js underscore.js

我的骨干模型有一个布尔值(isRegistered).当我渲染视图时,我希望根据布尔值的true/false值选中或取消选中复选框.

我目前的努力看起来像这样:

<input id="isRegisteredCheckbox" checked="<%= isRegistered ? 'checked': ''"/>
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为根据W3C规范,需要完全删除checked属性以取消选中复选框.

我如何使用骨干模板?

nik*_*shr 8

您可以使用测试来封闭 checked='checked'

<input id="isRegisteredCheckbox" <% if (isRegistered) { %>checked="checked"<% } %> />
Run Code Online (Sandbox Code Playgroud)


tko*_*one 7

你不需要这个checked=部分.如果需要检查,只需在标签中打印出来.


编辑

现在我们已经确定只打印"已检查"是有效的html,您可以尝试简单:

渲染:

var registered;
var tmpl = _.template(your template);
isRegistered ? registered = 'checked' : registered = '';
var tmpl_data = _.extend(this.model.toJSON(), {registered: registered}); // or whatever values you need to add
$(this.el).html(tmpl(tmpl_data));
Run Code Online (Sandbox Code Playgroud)

模板:

<input type="checkbox" {{ registered }}>
Run Code Online (Sandbox Code Playgroud)

使用此方法无需在模板中使用混乱的条件.