2016-05-19 86 views
0

我想實施一次只能選擇一個項目的清單控制。基本上像一個單選按鈕組,唯一的區別是這些項目可以被取消選中。我創建了一個自定義綁定來實現這一點,它在取消選中單選按鈕方面「起作用」,但viewmodel中的值不會設置爲null。使用KnockoutJS取消選中單選按鈕

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

回答

0

我設法解決第二種解決方案。我只是改變了選擇功能:

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

請注意,現在這個值設置爲null。

fiddle