使用KnockoutJS取消选中单选按钮

时间:2016-05-19 09:16:43

标签: knockout.js radio-button checkboxlist

我想实现一个清单控件,一次只能选择一个项目。基本上像一个单选按钮组,唯一的区别是项目可以取消选中。我创建了一个自定义绑定来实现这一点,它在取消选中单选按钮方面“有效”,但是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);
    }
};

Fiddle

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

1 个答案:

答案 0 :(得分:0)

我设法修复了第二个解决方案。我只是改变了选择功能:

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

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

fiddle