【发布时间】:2018-03-01 18:16:23
【问题描述】:
我知道敲除希望我们在绑定到 click 事件的函数中返回 true 以选中/取消选中复选框。
我尝试了以下code,但它没有选中复选框。我可以使用匿名计算函数显示该值,但我的数组可能很大,我不想保留性能开销。
还有其他方法吗?还是我做错了?
编辑:添加代码
HTML
<div data-bind="foreach: array">
<div data-bind="foreach: $data.child">
<input type="checkbox" data-bind="checked: isChecked, click: function(data, event){$parentContext.$parent.clickBox(data, event, $parent)}">
<span data-bind="text: $data.value"></span>
</div>
<p data-bind="text: label"></p>
</div>
JS
var mainModel = function(){
var self = this;
self.isChecked = ko.observable(true);
self.clickBox = function(data, event, $parent){
var j=0;
for(var i=0; i<$parent.length; i++){
if($parent[i].isChecked()){
j++;
}
}
$parent.label(j);
return true;
}
self.array = ko.observable(
[
{child: [
{value: 'a', isChecked: ko.observable(false)},
{value: 'b', isChecked: ko.observable(false)}],
label: ko.observable(0)
},
{child: [
{value: 'c', isChecked: ko.observable(false)},
{value: 'd', isChecked: ko.observable(false)}],
label: ko.observable(0)
}
]);
}
ko.applyBindings(new mainModel());
【问题讨论】:
-
Fiddle 在此处显示的代码之上是可以接受的,而不是作为替代品。