我一直在尝试做复选框Checkall和UnCheckall使用订阅和我部分成功做到这一点,但我无法找到一个解决方案时,我正在处理subscribe
。CheckAll/UncheckAll订阅的问题?敲除
使用订阅:
我在这里能够checkAll uncheckAll但是当我取消一个孩子复选框即test1
或test2
我需要我的父母复选框name
也被选中,并在下一回合,如果我检查test1
的家长复选框应该被检查,即保持条件两个孩子复选框被检查。
对于小提琴:Click Here
视图模型:
self.selectedAllBox.subscribe(function (newValue) {
if (newValue == true) {
ko.utils.arrayForEach(self.People(), function (item) {
item.sel(true);
});
} else {
ko.utils.arrayForEach(self.People(), function (item) {
item.sel(false);
});
}
});
相同的情况下,可以使用computed
简单的方法完全可以做到的,但由于一些性能问题,我需要使用subscribe
这是最好的方式,不会像计算的onload那样开火。
参考:使用计算机一样的东西是完全可以做到的检查这个Fiddle
我试图用个人复选框change
事件绑定,但它是一个死胡同至今。
任何帮助表示赞赏。
他是对的。计算是这样做的最好方法。 – 2014-11-14 18:50:41
@帕特里克那伟大的洞察力。是的,我已经尝试订阅儿童复选框,即事件:{更改:$ root.checkevaluate}'。在'checkevaluate'我试图以适当的方式做我的评估,但我卡住了。 – 2014-11-14 19:48:10
@MatthewJamesDavis是的,我确实相信它是最好的,但是以性能为代价,即如果我有'n'复选框,计算结果将会运行'n'次onload是不是。 – 2014-11-14 19:50:18