2016-05-19 8 views
0

一度に1つのアイテムしか選択できないチェックリストコントロールを実装したいと思います。基本的にラジオボタングループのように、唯一の違いはアイテムがチェックされないことです。これを達成するためのカスタムバインディングを作成しましたが、ラジオボタンのチェックを外すという意味では機能しますが、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

私は第2解決策を修正することができました。

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

これで値がnullに設定されていることに注意してください。

fiddle

関連する問題