2012-02-01 9 views

Odpowiedz

4

Wywołanie wyzwalacza ("kliknięcie") w jQuery uruchamia po prostu obsługę zdarzeń "kliknij". Faktycznie nie powoduje to kliknięcia (i tym samym zmiany stanu zaznaczonego) w polu wyboru - jedyny czas, kiedy robi się coś takiego, ma miejsce w przypadku, gdy element ma właściwość function o nazwie identycznej jak zdarzenie (np. form.submit() - ale nie ma checkbox.click()).

Ale skoro używasz nokaut, równie dobrze można zrobić:

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()); 
}); 

To dość dużo punktem użyciu nokaut w pierwszej kolejności. Wprowadź zmiany w modelu widoku, a nie w widoku. Ponieważ właściwość pola wyboru to checked to dane powiązane z IsSelected, zmiana IsSelected zmieni właściwość pola wyboru checked.