如果我正在更改敲除中的复选框列表的绑定的下拉值,它显示我默认选中,我想显示未选中..
在页面加载复选框列表工作正常..但当下拉/选择值更改子复选框列表显示已检查..我想显示取消选中..
也可以在选择框的更改事件之后,如果我选中check all复选框 - 显示我布尔值不是函数错误// HTML
<p>
<input type="checkbox" data-bind="checked: allSelect" />
All
<table>
<tbody data-bind="foreach: Locations">
<td>
<input type="checkbox" data-bind="checked: IsSelected">
</td>
<td>
<p data-bind="text: Name"></p>
</td>
</tbody>
</table>
</p>
//复选框全部
var locations = model.Locations;
var Location = function (location)
{
var self = this;
self.Id = location.Id;
self.Name = location.Name;
self.IsSelected = ko.observable(location.IsSelected);
console.debug("kp1 : " + location.IsSelected);
};
var mappedLocations = [];
ko.utils.arrayForEach(locations, function (location) {
mappedLocations.push(new Location(location));
});
console.debug(mappedLocations);
self.Locations = ko.observableArray(mappedLocations);
self.allSelect = ko.computed({
read: function () {
var allSelected = true;
self.selectedIds = [];
ko.utils.arrayForEach(self.Locations(), function (item)
{
console.debug("kp : " + item.IsSelected());
if (!item.IsSelected())
{
allSelected = false;
}
else
{
self.selectedIds.push(item.Id);
}
});
console.debug('selectedIds: ' + self.selectedIds);
return allSelected; //to trigger the browser default bahaviour
},
write: function (value)
{
ko.utils.arrayForEach(self.Locations(), function (item)
{
item.IsSelected(value);
});
}
});
//落下
self.changeProject = function ()
{
console.debug('Change Project ' + self.ModelingProjectId());
self.Locations.removeAll();
var data = { id: self.ModelingProjectId() };
$.ajax({
type: "GET",
contentType: "application/json",
url: root + 'Location/LocationsByProjectandParentId',
data: data
}).done(function (json, textStatus, jqXHR) { //see http://api.jquery.com/jquery.ajax/
for (var i = 0; i < json.length; i++)
{
self.Locations.push(new Location(json[i]));
}
});
}