Ember.js: Cases à cocher non cliquables si elles sont contenues dans un élément auquel une action est attachée.

Créé le 4 déc. 2014  ·  4Commentaires  ·  Source: emberjs/ember.js

Exemple simple,

avec une balise d'entrée de type="checkbox" contenue à l'intérieur. La case à cocher est cliquable comme prévu. Maintenant, mettez une action sur le div contenant, disons pour attraper les événements de clic... la case à cocher est maintenant non cliquable. Vous pouvez intercepter l'événement 'change' et voir qu'il essaie de fonctionner comme prévu mais qu'il est annulé à chaque fois. Quelques violons ci-dessous :

fonctionne comme prévu....
http://jsfiddle.net/yp128r1e/

ne...
http://jsfiddle.net/yp128r1e/1/

Bug

Commentaire le plus utile

Par défaut, l'assistant d'action empêche l'action par défaut. Dans ce cas, cela signifie que les cases à cocher ne se déclencheront pas. Vous pouvez remplacer cela en définissant preventsDefault=false sur l'assistant. Voir http://jsfiddle.net/yp128r1e/3/.

Tous les 4 commentaires

@hilem Ce n'est pas vraiment un problème avec tous les types d'événements. Il semble qu'il s'agisse spécifiquement d'un problème de clic. Je soupçonne qu'Ember empêche le comportement d'événement par défaut que le navigateur considère comme signifiant que la case à cocher ne doit pas changer d'état. Je ne crois pas que ce soit un bug. La solution serait de ne pas appliquer de gestionnaire d'action de cette manière si vous souhaitez également gérer d'autres choses comme les cases à cocher.

@wagenet Il s'agit d'un modèle de conception très courant. Pour pouvoir cliquer n'importe où dans une ligne pour sélectionner une ligne et pas seulement la case à cocher de la ligne. La case à cocher est ajoutée uniquement pour renforcer qu'elle est sélectionnable et pour des raisons d'accessibilité et ce que vous me dites, c'est que la seule façon de la gérer est essentiellement de ne pas utiliser une case à cocher mais de simuler une case à cocher avec des images ou autre. Comme il n'y a pas d'autre moyen de gérer cela. Ce qui met beaucoup de fardeau sur les tests d'accessibilité qui seraient autrement parfaits. Au fait, il ne s'agit pas d'un problème avec les autres éléments de formulaire. J'ai seulement repéré ce comportement avec la case à cocher. C'est une chose de dire qu'Ember doit s'attarder sur ce problème pendant un certain temps car il est trop difficile de gérer la façon dont le code est actuellement architecturé, mais je ne vois pas comment vous pouvez affirmer que ce n'est pas un bogue.

Par défaut, l'assistant d'action empêche l'action par défaut. Dans ce cas, cela signifie que les cases à cocher ne se déclencheront pas. Vous pouvez remplacer cela en définissant preventsDefault=false sur l'assistant. Voir http://jsfiddle.net/yp128r1e/3/.

Merci @wagenet !

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