Vue: Das Kontrollkästchen wird aktiviert angezeigt, wenn das v-Modell falsch ist

Erstellt am 8. Apr. 2016  ·  3Kommentare  ·  Quelle: vuejs/vue

Ich habe diesen Pfad eingeschlagen, weil @click ausgelöst wurde, bevor das v-Modell aktualisiert wurde (Beispiel hier: http://jsfiddle.net/5sH6A/308/ )
daher wusste ich nicht welchen Wert das hat. Ich dachte, ich würde meine Logik in einer Uhr ausprobieren: Funktion, fand aber das folgende Problem.

Vue.js-Version

1.0.16

Reproduktionslink

http://jsfiddle.net/5sH6A/303/

Schritte zum Reproduzieren

Klicken Sie auf das Kontrollkästchen und wählen Sie Abbrechen

Was wird erwartet?

Das Kontrollkästchen sollte leer sein

Was passiert eigentlich?

Das Kontrollkästchen wird aktiviert angezeigt, während die gebundenen Daten falsch sind

Hilfreichster Kommentar

Sehr spät zu dieser Party – aber nach all den Jahren immer noch ein Live-Thema für mich. Meine Lösung:
Wenn Sie eine Checkbox-Eingabe mit v-model verwenden, verwenden Sie den @change-Handler onchange . Funktioniert sowohl für IE als auch für vernünftige Browser.

Wenn Sie ein V-Modell-Kontrollkästchen und @click verwenden , wird der Wert Ihres V-Modell-Attributs (z. B. "flgChecked") seltsamerweise im Chrome/Firefox-Click-Handler umgekehrt. Das heißt, es ist falsch, wenn Sie das Kontrollkästchen gerade auf die Position „Ein“ geklickt haben, und wahr, wenn Sie es auf die Position „Aus“ geklickt haben. Also - umgekehrt. Aber IE meldet tatsächlich "richtig". Damit . . . Verwenden Sie @change.

Oder vielleicht übersehe ich einfach etwas.

Alle 3 Kommentare

Hier scheint es um Kompatibilität zu gehen.
Es funktioniert ganz gut mit Edge 12 und IE11 unter Windows 10, bricht aber mit Chrome 49.0.2623.110
Es bricht auch mit Firefox 41 bei offenem Suse-Sprung

Das Festlegen des gleichen Werts in einem Watcher ist immer eine schlechte Idee ...

Ich würde sagen, der einfachste Weg, damit umzugehen, besteht darin, v-model einfach nicht zu verwenden. Sie versuchen sowieso, den Wert selbst zu kontrollieren: http://jsfiddle.net/yyx990803/5sH6A/310/

Sehr spät zu dieser Party – aber nach all den Jahren immer noch ein Live-Thema für mich. Meine Lösung:
Wenn Sie eine Checkbox-Eingabe mit v-model verwenden, verwenden Sie den @change-Handler onchange . Funktioniert sowohl für IE als auch für vernünftige Browser.

Wenn Sie ein V-Modell-Kontrollkästchen und @click verwenden , wird der Wert Ihres V-Modell-Attributs (z. B. "flgChecked") seltsamerweise im Chrome/Firefox-Click-Handler umgekehrt. Das heißt, es ist falsch, wenn Sie das Kontrollkästchen gerade auf die Position „Ein“ geklickt haben, und wahr, wenn Sie es auf die Position „Aus“ geklickt haben. Also - umgekehrt. Aber IE meldet tatsächlich "richtig". Damit . . . Verwenden Sie @change.

Oder vielleicht übersehe ich einfach etwas.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

wufeng87 picture wufeng87  ·  3Kommentare

franciscolourenco picture franciscolourenco  ·  3Kommentare

bdedardel picture bdedardel  ·  3Kommentare

WolfgangFellger picture WolfgangFellger  ·  3Kommentare

robertleeplummerjr picture robertleeplummerjr  ·  3Kommentare