2016-05-19 3 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; 
} 

Обратите внимание: теперь это значение устанавливается равным нулю.

fiddle

Смежные вопросы