使用 KnockoutJS 取消选中单选按钮

Uncheck radio button with KnockoutJS

我想实现一个清单控件,一次只能选择一个项目。基本上就像一个单选按钮组,唯一的区别是项目可以取消选中。我创建了一个自定义绑定来实现此目的,它 "works" 取消选中单选按钮,但是视图模型中的值未设置为 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);
    }
};

Fiddle

有类似的问题,但是接受的解决方案与我的问题相同。 link

我设法解决了第二个解决方案。我只是更改了 select 函数:

select: function(data) {
    if(this.selectedAdmin()==data.id){
       this.selectedAdmin(null);
    }else{
       this.selectedAdmin(data.id);
    }
    return true;
}

请注意,现在将值设置为空。

fiddle