我有一个带有复选框的knockout表格(为了方便起见,这里限制每行只有一个复选框)。 当单击复选框时,它应该翻转状态(正如您所期望的那样)。 但是,我还在表格行上设置了单击事件和选择事件,这与复选框产生了冲突...
<table>
<tbody data-bind="foreach: namespace.divResults.model">
<tr data-bind="click: $root.selectItem, css: {selected: $root.isSelected($data)}">
<td data-bind="text: Title"></td>
<td data-bind="text: Surname"></td>
<td data-bind="text: PostCode"></td>
<td><input type="checkbox" data-bind="checked: Excluded, click: $root.toggleExcluded"></td>
<td data-bind="text: Notes" style="display:none"></td>
<tr>
<tbody>
<table>
<div>
<!-- ko with: $root.selectedItem -->
<textarea data-bind="textInput:Notes"></textarea>
</div>
以及JavaScript:
(function(ns) {
ns.divResults = null;
var resultsViewModel = function() {
var self = this;
self.model = ko.observableArray();
self.selectedItem = ko.observable();
self.selectItem = function(row){ self.selectedItem(row); }
self.isSelected = function (row) { return self.selectedItem() === row; }
self.toggleExcluded = function() {
return true;
}
}
}
我尝试使用clickBubble事件,但这会阻止表格行上的点击事件的动作,在任何情况下都可以正常工作。 我发现的是,单击行复选框正确地更改其状态,但在行单击执行其操作后又被放回。