我显示或隐藏了在我的设置框中选择的div。为此我必须使用敲除检查绑定,但这只返回一个选定元素的数组,但我需要最后更改的元素,然后需要知道它是否被选中。这样可以防止不必要的循环。
index.cshtml:
<input type="checkbox" class="checkbox checkbox-category" name="checkbox" data-bind="attr: {id: 'checkbox' + category.id }, checked: $root.enabledCategories, checkedValue: category" checked />
打字稿classe:
enabledCategories: KnockoutObservableArray<Category>;
this.enabledCategories = ko.observableArray([]);
this.enabledCategories(this.categories());
this.enabledCategories.subscribe(function (val) {
console.log(val);
});
你似乎做了一点错误... checked
绑定应该绑定到一个布尔值,你绑定到ObservableArray
。
如果您需要知道单击了哪个复选框以及是否选中了它,您可能需要尝试click
绑定:
click: $root.CateoryClicked.bind($data)
或类似的东西...
然后在你的视图模型中你有这个:
this.CateoryClicked = function(item) {
if (item.IsSelected){
//do what you need to do
} else {
item.IsSelected = true;
//do what you need to do
}
}
这里的项目应该是绑定到复选框的对象(category
)。我不知道你是如何设置的,但我假设你在那个对象上有一个IsSelected属性。