我想实现一个清单控件,一次只能选择一个项目。基本上像一个单选按钮组,唯一的区别是项目可以取消选中。我创建了一个自定义绑定来实现这一点,它在取消选中单选按钮方面“有效”,但是viewmodel中的值不会设置为null。
ko.bindingHandlers.radioCheckbox =
{
init: function (element, valueAccessor, allBindings) {
ko.bindingHandlers.value.init(element, valueAccessor, allBindings);
},
update: function (element, valueAccessor, allBindings) {
(function (element, valueAccessor, allBindings) {
$(element).mousedown(function(e) {
e.preventDefault();
if ($(this).is(':checked')) {
allBindings().checked(null);
} else {
$(this).prop('checked', true);
}
}).click(function(e) {
e.preventDefault();
});
})(element, valueAccessor, allBindings);
}
};
有类似的问题,但是接受的解决方案与我的问题相同。 link
答案 0 :(得分:0)
我设法修复了第二个解决方案。我只是改变了选择功能:
select: function(data) {
if(this.selectedAdmin()==data.id){
this.selectedAdmin(null);
}else{
this.selectedAdmin(data.id);
}
return true;
}
请注意,现在将值设置为null。