2013-04-24 3 views
4

У меня есть флажок, по которому я хочу привязать функцию, которая что-то делает, если флажок установлен, а что-то, если флажок не установлен.Проблема с нокаутом

Но этот флажок не будет проверяться. Он проверяется при вызове функции, но после выхода из функции он не проверяется. Что я делаю не так?

Вот пример того, что я пытаюсь сделать: http://jsfiddle.net/GSeFD/

JS:

function MyViewModel() { 
    var self = this; 
    self.click = function(data,event) { 
     if ($('#checkbox').is(':checked')){ 
      console.log('checked'); 
     } 
     else{ 
      console.log('unchecked'); 
     } 
    } 
} 
ko.applyBindings(new MyViewModel()); 

HTML:

<input type="checkbox" id="checkbox" data-bind="click: $root.click" /> 

ответ

4

В click обработчике вам нужно return true если вы хотите вызвать событие браузера по умолчанию (например, отметьте галочкой)

self.click = function(data,event) { 
    if ($('#checkbox').is(':checked')){ 
     console.log('checked'); 
    } 
    else{ 
     console.log('unchecked'); 
    } 
    return true; 
} 

Demo JSFiddle.

Смотрите также документацию: Note 3: Allowing the default click action

Кстати следует также рассмотреть использование checked binding, если вы работаете с галочками.

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