Mam pole wyboru powiązane z obserwowalnym w modelu widoku. Mam wymóg, aby w zasadzie wyskoczyć "Czy jesteś pewien?" potwierdzenie, jeśli użytkownik zmieni wartość z "prawda" na "fałsz". Trochę strasznie się zastanawiam, jakie jest najlepsze miejsce, aby zmiana była "możliwa do anulowania". . .Knockout - anulować zmianę zdarzenia?
1) Ładowarka dla jQuery kliknij zdarzenie 2) ViewModel wewnętrzny subscribe "beforeChange" 3) ViewModel wewnętrzny subskrybować (normalny)
W każdym razie, ja ogromnie wolą mieć szansę, aby anulować zmianę od razu reagować na zmianę, potencjalnie powracając do poprzedniej wartości, jeśli zajdzie taka potrzeba.
Czy wydarzenie subskrypcji Knockout daje możliwość anulowania zmiany? Każdy wgląd byłby doceniony. Dzięki!
Och, mój Boże! To jest fantastycznie pomocne. Nigdy nie wiedziałem o stopImmediatePropagation() jQuery. Chociaż zwykle staram się unikać odwoływania się do rzeczy jQuery poza core viewModel, jest to świetne rozwiązanie dla mojego problemu. Jeszcze raz dziękuję! – blaster
W moim przypadku 'event.stopImmediatePropagation' nie zatrzymało zmiany wartości w ko viewModel. Musiałem ponownie ustawić wartość: 'var cb = event.target; ... data.myvalue (! cb.checked); ' – Sprockincat
Kolejność powiązania danych jest * bardzo * ważna w tym przypadku. Jeśli wiążemy wartość * przed * zdarzeniem, powiązanie wartości zostanie wykonane jako pierwsze. Jeśli zdarzenie jest powiązane, zostanie wykonane jako pierwsze i zatrzymane zostanie propagowanie. Zobacz to skrzypce, aby je zepsuć: http://jsfiddle.net/8AuVj/ –