我有一个主复选框,点击选中所有复选框。对于子复选框,除了mainCheckBox之外,我还有一些不同的逻辑涉及2个不同的observable,当检查子复选框时,需要将值写入不同的observable。
我创建了一个带有参数的计算observable,如下所示:
var vm = ko.mapping.fromJS(data);
var viewModel =
function ()
{
this.self = this;
this.ExportSchemas = vm;
this.SelectAll = ko.observable(true);
this.IsChecked = function (checkboxVM) {
return ko.computed({
read: function () {
return this.SelectAll(); //problemLine
},
write: function (value) {
checkboxVM.Selected(value);
alert(checkboxVM.Selected());
},
owner: this.self
});
};
};
<input type="checkbox" data-bind="checked: SelectAll" value="None" id="mainCheckBox" name="check" />
<div data-bind="foreach: ExportSchemas">
<div data-bind="foreach: Clauses">
<input type="checkbox" value="None" data-bind="checked: $root.IsChecked($data), attr: { id: 'clause' + Id(), value: Id() }" name="check" />
</div>
</div>
计算的observable的写行为很奇怪,当上面代码中的problemLine
如上所述时,它适用于备用点击。当我使用以下内容代替problemLine
时:
return this.SelectAll;
然后,计算的observable的写入正常工作,但读取停止工作并且检查/取消选中mainCheckBox对子复选框没有影响。
有什么建议吗?