如果我正在更改敲除中的复选框列表的绑定的下拉值,它显示我默认选中,我想显示未选中..

在页面加载复选框列表工作正常..但当下拉/选择值更改子复选框列表显示已检查..我想显示取消选中..

也可以在选择框的更改事件之后,如果我选中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]));
        }
    });
}