Vue: La case à cocher est cochée lorsque v-model est faux

Créé le 8 avr. 2016  ·  3Commentaires  ·  Source: vuejs/vue

J'ai commencé sur cette voie parce que @click s'est déclenché avant la mise à jour du v-model (exemple ici : http://jsfiddle.net/5sH6A/308/ )
donc je ne savais pas quelle était la valeur. Je pensais essayer ma logique dans une montre: fonction mais j'ai trouvé le problème ci-dessous.

Version vue.js

1.0.16

Lien de reproduction

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

Étapes à reproduire

Cliquez sur la case à cocher et choisissez annuler

Qu'est-ce qui est attendu ?

La case à cocher doit être vide

Que se passe-t-il réellement ?

La case à cocher est cochée alors que les données liées sont fausses

Commentaire le plus utile

Très tard à cette fête - mais toujours un problème d'actualité pour moi après toutes ces années. Ma soluce :
Lorsque vous utilisez une entrée de case à cocher avec v-model, utilisez onchange @change handler. Fonctionnera à la fois pour IE et les navigateurs raisonnables.

Étrangement, si vous utilisez une case à cocher v-model et @click , la valeur de votre attribut v-model (par exemple, "flgChecked") sera inversée dans le gestionnaire de clic Chrome/Firefox. C'est-à-dire qu'il sera faux lorsque vous venez de cliquer sur la case à cocher en position activée, vrai lorsque vous l'aurez cliqué en position désactivée. Donc - inversé. Mais IE rapporte en fait "correctement". Alors . . . utilisez @change.

Ou peut-être que je manque juste quelque chose.

Tous les 3 commentaires

Cela semble être une question de compatibilité.
Il fonctionne assez bien avec Edge 12 et IE11 sur Windows 10, mais rompt avec chrome 49.0.2623.110
Il rompt également avec firefox 41 sur le saut de suse ouvert

Définir la même valeur dans un observateur est toujours une mauvaise idée...

Je dirais que la façon la plus simple de gérer cela est tout simplement de ne pas utiliser v-model . Vous essayez quand même de contrôler la valeur vous-même : http://jsfiddle.net/yyx990803/5sH6A/310/

Très tard à cette fête - mais toujours un problème d'actualité pour moi après toutes ces années. Ma soluce :
Lorsque vous utilisez une entrée de case à cocher avec v-model, utilisez onchange @change handler. Fonctionnera à la fois pour IE et les navigateurs raisonnables.

Étrangement, si vous utilisez une case à cocher v-model et @click , la valeur de votre attribut v-model (par exemple, "flgChecked") sera inversée dans le gestionnaire de clic Chrome/Firefox. C'est-à-dire qu'il sera faux lorsque vous venez de cliquer sur la case à cocher en position activée, vrai lorsque vous l'aurez cliqué en position désactivée. Donc - inversé. Mais IE rapporte en fait "correctement". Alors . . . utilisez @change.

Ou peut-être que je manque juste quelque chose.

Cette page vous a été utile?
0 / 5 - 0 notes