我不确定我在以下示例中遗漏了什么:
http://jsfiddle.net/2NMJX/438/
但是,每次选中复选框并将其添加到observableArray" select"时,不应该触发订阅下的函数。 ?
感谢您的帮助
<table>
<tbody data-bind="foreach:seats" >
<tr>
<td>
<span data-bind="text:No"></span>
</td>
<td>
<input type="checkbox" data-bind="checked:$parent.selected(), checkedValue:No" />
</td>
</tr>
</tbody>
</table>
var viewModel = {
seats:ko.observableArray( [
{ "No": "1" }, { "No": "2" },
{ "No": "3" }, { "No": "4"},
{ "No": "5" }, { "No": "6"},
{ "No": "7" }, { "No": "8"},
{ "No": "9" },
]),
selected: ko.observableArray()
};
viewModel.selected.subscribe(
function(newvalue){
alert(newvalue);
}
);
ko.applyBindings( viewModel);
答案 0 :(得分:1)
我相信这只是一个错字。只需按()
checked:$parent.selected
,如下所示:
<input type="checkbox" data-bind="checked:$parent.selected, checkedValue:No" />
可能会读这个来解释一些行为:
如果您的参数解析为数组,则会给予特别考虑。在这种情况下,如果值与数组中的项匹配,KO将设置要检查的元素,如果数组中没有包含,则取消选中。
当用户选中或取消选中该复选框时,KO将相应地添加或删除数组中的值。