Javascript 如何在knockout js中基于数组值检查复选框
我在做击倒js。我有一个来自数据库的数组列表,通过调用ajax并将所有值保存在knockout observable数组中 我正在阵列中循环。基于我要选中或取消选中复选框的值。下面是我的做法,但这似乎不起作用。我可以看到数组中存在roleid的值,但如果roleid的值为true,则不选中复选框。我做错了什么Javascript 如何在knockout js中基于数组值检查复选框,javascript,knockout.js,Javascript,Knockout.js,我在做击倒js。我有一个来自数据库的数组列表,通过调用ajax并将所有值保存在knockout observable数组中 我正在阵列中循环。基于我要选中或取消选中复选框的值。下面是我的做法,但这似乎不起作用。我可以看到数组中存在roleid的值,但如果roleid的值为true,则不选中复选框。我做错了什么 <tbody data-bind="foreach:$root.test"> <tr> <div><input type=
<tbody data-bind="foreach:$root.test">
<tr>
<div><input type="checkbox" value="1" data-bind="checked: roleid == 1"/></div>
</tr>
</tbody>
我认为roleid需要被观察到。然后你可以使用
roleid() === 1
或
无论哪一个适合您的情况。如果roleid是可观察的,并且被设置为字符串值,那么这将起作用 敲除“checked”仅比较字符串值与字符串值,因此value=“1”中的值被视为字符串 因此,如果roleid是这样设置的,您的复选框将被选中 viewModel.roleid=ko.可观察(“1”) 您可以使用checkedValue绑定,并可以将observableArray分配给checked绑定 从文件 如果绑定还包括checkedValue,则这将定义选中绑定使用的值,而不是元素的value属性。如果希望值不是字符串(例如整数或对象),或者希望动态设置值,则此选项非常有用 以下是javascript代码: Html代码
Js小提琴演示了它的使用
roleid() === true
function viewModel()
{
var self = this;
//the array list which you can get from the server
self.items = ko.observableArray([
{ item: '1' },
{ item: '2' },
{ item: '3' },
{ item: '4' }
]);
//the array of items which you want to be checked
self.chosenItems = ko.observableArray(
[
self.items()[1],
self.items()[3]
]
);
}
<div data-bind="foreach: items">
<input type="checkbox"
data-bind="checkedValue: $data, checked: $root.chosenItems" />
<span data-bind="text: item"></span><br />
</div>