复选框选中值绑定

时间:2014-05-12 17:25:00

标签: checkbox knockout.js checked

以下代码是我为复选框编写的代码。不确定为什么这不会显示已检查的值,即使它从我的JS文件中正确显示。

<input type="checkbox" 
       data-bind="attr: { value: person.id}, checked: $root.chosenPerson">

如果chosenPerson包含两个值,则应在复选框中选中这些值。这不会发生。

我也尝试过:

<input type="checkbox" 
       data-bind="attr: { value: person.id}, checked: $root.chosenPerson">

我也尝试过:

<input type="checkbox" 
       data-bind="attr : { checked:$root.chosenPerson }, value : person.id" />

chosenPerson&#34;已检查&#34;

中没有任何作用

请提出解决方案。

2 个答案:

答案 0 :(得分:4)

您的绑定应返回true,因此请将其更改为 -

<input type="checkbox" data-bind="attr: { value: person.id}, checked: $root.chosenPerson() === $data">

其中selectedPerson等于input元素的上下文。如果元素不在人的上下文中,只需执行

<input type="checkbox" data-bind="attr: { value: person.id}, checked: $root.chosenPerson() === person()">

答案 1 :(得分:3)

如果chosenPerson数组包含整数,则复选框的值也必须是整数。使用attr/value绑定是不可能的,因为它只是设置了元素的value属性,它始终是一个字符串。相反,您应该使用checkedValue绑定,它可以绑定任何类型的值。

<input type="checkbox" data-bind="checkedValue: person.id, checked: $root.chosenPerson">