我觉得这很容易...... 我有一个像这样的knockoutjs viewmodel:
UserModel = function(user) {
// ...
this.Permissions = new PermissionsModel(user.Permissions);
this.fullAccessValue = ko.observable(false);
// if the permissions change
$.each(self.Permissions, function(i, item) {
item.subscribe(function() {
if (self.allStoresSelected() && self.allPermissionsSelected()) {
userModel.fullAccessValue = ko.observable(true);
$('#savFullAccessCheck').prop('checked', true);
} else {
userModel.fullAccessValue = ko.observable(false);
$('#savFullAccessCheck').prop('checked', false);
}
});
});
};
我必须做什么:
我有一个带有复选框(权限)和另一个复选框(fullaccess)的列表。
现在,当选中所有权限复选框时,必须检查fullaccess。
如果不是全部选中,则必须取消选中fullAccess。
否则,当我选中fullAccess复选框时,所有其他复选框都必须被清除。
复选框的权限如下所示:
var PermissionsModel = function(permissions) {
var self = this;
self.Access1 = ko.observable(permissions.Access1);
self.Access2 = ko.observable(permissions.Access1);
// ...
};
userModel = new UserModel();
ko.applyBindings(userModel, $('#savBottomWrap')[0]);
简而言之:我的问题是如何使用javascript更新可观察值!
这不起作用:
userModel.fullAccessValue = ko.observable(false);
$('#savFullAccessCheck').prop('checked', false);
答案 0 :(得分:2)
我帮助了另一个人,你需要使用计算
self.SelectAll = ko.computed({
read: function() {
var item = ko.utils.arrayFirst(self.People(), function(item) {
return !item.Selected();
});
return item == null;
},
write: function(value) {
ko.utils.arrayForEach(self.People(), function (person) {
person.Selected(value);
});
}
});
knockoutjs deselect/select all checkboxes when one or more items deselected
答案 1 :(得分:1)
如果它在这里实施
userModel.fullAccessValue = ko.observable(false);
比你可以改变价值如下:
userModel.fullAccessValue(true);
编辑:你应该把这个值绑定到像那样的复选框
<input type="checkbox" checked="data-bind: userModel.fullAccessValue">