Vue: Über den Fehler des nativen Werts des Kontrollkästchens?

Erstellt am 11. Jan. 2017  ·  7Kommentare  ·  Quelle: vuejs/vue

Hallo.
Ich habe ein sehr seltsames Problem mit Kontrollkästchen festgestellt.

<template lang="html">
<div>
    <div v-for="(item,key) in test">
        <input type="checkbox" v-model="item.active">
    </div>
</div>
</template>

<script>
    window.T = [{
            active: false
    }, {
            active: false
    }];

    export default {
        data() {
          return {
              test: T
          }
        },
    methods: {}
}
</script>

Zuerst habe ich T[0].active=true in die Konsole eingegeben, und das erste Kontrollkästchen wurde normal aktiviert. Als ich den Browser aktualisiert habe, habe ich das erste Kontrollkästchen manuell aktiviert und dann T[0].active=false eingegeben. Das erste Kontrollkästchen wird nicht deaktiviert, das zweite kann jedoch über die Konsole normal (wahr / falsch) eingestellt werden.

Versucht 2.1.0 und 2.1.8, die Ergebnisse sind die gleichen, die Chrome-Version ist 54.0.2824.2

bug

Hilfreichster Kommentar

Dies wurde über # 4639 behoben

Alle 7 Kommentare

Um statusbehaftete dom-Elemente (Eingabe usw.) mit v-for zu rendern, müssen Sie das Schlüsselattribut hinzufügen, um sicherzustellen, dass der Status korrekt ist.
https://cn.vuejs.org/v2/guide/list.html#key

Dieser Standardmodus ist gültig, gilt jedoch nur für Listenrendering-Ausgaben, die nicht vom Status der Unterkomponente oder vom temporären DOM-Status abhängen (z. B. Formulareingabewerte).

@fnlctrl Vielen Dank für Ihre Antwort, aber vielleicht habe ich sie nicht klar beschrieben. Ich habe den Schlüssel wie gesagt hinzugefügt, und das Ergebnis ist das gleiche. Es gibt einen weiteren Beweis dafür, dass das, was ich gesagt habe, das in Chrom 55.0.2883.95 unter Mac ist. Unabhängig davon, ob der Schlüssel hinzugefügt wurde oder nicht, kann er normal eingestellt werden.

Kann nicht reproduzieren. https://jsfiddle.net/1b7cux60/

@fnlctrl Klicken Sie vor 3 Sekunden auf den ersten, um den ausgewählten Status
https://jsfiddle.net/1b7cux60/5/

Testen Sie es weiter, es gibt tatsächlich ein Problem
https://jsfiddle.net/Lu3o86wt/
Der Kontrollkästchenstatus des letzten Klicks ist falsch

Das zuletzt angeklickte <input> bleibt im falschen Zustand

Chrom
a

Kante
b

@fnlctrl Dies ist eigentlich kein Fehler. Es passiert, weil das Kontrollkästchen immer noch fokussiert ist. Wir aktualisieren es nicht absichtlich. Zumindest ist es für Texteingaben sinnvoll, wir möchten möglicherweise andere Eingaben überdenken

Dies wurde über # 4639 behoben

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen