Ich habe ein Kontrollkästchen an eine Observable in einem Ansichtsmodell gebunden. Ich habe die Anforderung, ein "Bist du sicher?" Bestätigungsaufforderung, wenn der Benutzer es von wahr zu falsch ändert. Ich habe eine schreckliche Zeit herauszufinden, der beste Ort, um die Änderung "stornierbar" zu machen. . .Knockout - Abbrechen eines Änderungsereignisses?
1) jQuery-Handler für Click-Ereignis 2) Ansichtsmodell interne subscribe "beforeChange" 3) Ansichtsmodell interne abonnieren (normal)
Auf jeden Fall hatte ich wesentlich lieber die Chance haben, um die Änderung abzubrechen direkt als Reaktion auf die Änderung, möglicherweise zurück zu seinem vorherigen Wert, wenn es sein muss.
Bietet Knockouts Abonnement-Event Ihnen die Möglichkeit, eine Änderung zu stornieren? Jeder Einblick würde geschätzt werden. Vielen Dank!
Oh mein Gott! Das ist fantastisch hilfreich. Ich wusste nie über jQuery's stopImmediatePropagation(). Während ich normalerweise versuche, jQuery-Sachen außerhalb des Core ViewModel zu referenzieren, ist dies eine großartige Lösung für mein Problem. Danke nochmal! – blaster
In meinem Fall hat 'event.stopImmediatePropagation' den Wert nicht im ko viewModel geändert. Ich musste den Wert erneut setzen: 'var cb = event.target; ... data.myvalue (! cb.checked); ' – Sprockincat
Die Reihenfolge der Datenbindung ist in diesem Fall * sehr * wichtig. Wenn Sie den Wert * vor * das Ereignis binden, wird zuerst die Wertbindung ausgeführt. Wenn das Ereignis gebunden ist, wird es zuerst ausgeführt und die Weitergabe gestoppt. Sieh dir diese Geige an, um sie kaputt zu sehen: http://jsfiddle.net/8AuVj/ –