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
.