Knockout JS根据所选选项检查绑定

时间:2016-03-06 10:09:30

标签: jquery knockout.js

我必须根据数据库中的值检查/取消选中页面加载时的复选框。

HTML代码:

<div class="checkbox">
    <label>
        <input type="checkbox" data-bind = "checked: selectedUser() ? selectedUser().user_management : ''"> User Management
    </label>
</div>
<div class="checkbox">
    <label>
        <input type="checkbox" data-bind = "checked: selectedUser() ? selectedUser().client_information : ''"> Client Information
    </label>
</div>

服务器返回的Json是:

[{"user_name":"test1","user_management":"1", "client_management":"0"}]

响应用于创建以下选项:

<select class="form-control" name="form-edit-user-name" id="form-edit-user-name" data-bind = "options: availableUsers,
                       optionsText: 'user_name',
                       value: selectedUser,
                       optionsCaption: 'Choose...'">
                            </select>

在理想情况下,应检查用户管理复选框,因为它在Json中的值为1,而不应检查客户端管理,因为它是0.而是检查两个框。

1 个答案:

答案 0 :(得分:1)

检查两个复选框的原因是(来自文档)

  

如果你给的值实际上不是布尔值,那么它就是   松散地解释。这意味着非零数字和非空数字   对象和非空字符串都将被解释为true,而   零,空,未定义和空字符串将被解释为false。

很简单,将var myCallback = function(index, value) { value.change(function(){ if (jQuery(this).val() == "recurring") { jQuery('#recurring' + index).show(); } else { jQuery('#recurring' + index).hide(); } }); }; var myArray = $('#leveltype'); jQuery.each(myArray, myCallback (index, value) ); 设为boolean或int值,而不是来自服务器的字符串。

<强>码

1's & 0's

工作 tuple extractor

如果你想坚持使用字符串,可以调整代码,例如 sample