Привязка флажка в нокауте не работает для события триггера - PullRequest
5 голосов
/ 01 февраля 2012

Значение привязки данных флажка не меняется, когда я пытаюсь вызвать событие щелчка флажка.

Я создал jsfiddle, когда я нажимаю кнопку, я ожидаю, что привязка значения изменится, но нет.

http://jsfiddle.net/2T9QZ/13/

Любая помощь?

1 Ответ

4 голосов
/ 01 февраля 2012

Триггер вызова ("click") в jQuery просто запускает ваш обработчик событий "click".На самом деле это не вызывает щелчок (и, следовательно, изменение проверенного состояния) на флажке - единственный раз, когда он делает что-то подобное, в случае, когда элемент имеет свойство функции, названное так же, как событие (например, form.submit() - но нет checkbox.click()).

Но так как вы используете нокаут, вы могли бы также сделать:

var viewModel = {
    IsSelected: ko.observable(false) // Initially false
};

ko.applyBindings(viewModel);


$('#buttonInput').click(function(){
    viewModel.IsSelected(true); // <-------
    // Or, in order to toggle:
    // viewModel.IsSelected(!viewModel.IsSelected());
});

В этом и заключается смысл использования нокаута впервое место.Вносите изменения в модель представления, а не в представление.Поскольку свойство checked флажка является привязкой данных к IsSelected, изменение IsSelected изменит свойство checked флажка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...