2017-08-22 7 views
2

Est-il possible de lier conditionnellement un événement en utilisant .trigger() ou .delegate() dans la vue html?Lier conditionnellement un événement dans Aurelia

Ceci est la façon régulière:

<div mousedown.delegate="handleMouseDown($event)"></div>

Je pensais à quelque chose comme:

<div mousedown.delegate="isDraggable ? handleMouseDown($event) : null"></div>

Idéalement, si isDraggable === false aucun gestionnaire est enregistré.

Actuellement, je suis en train de faire cette vérification dans le modèle de vue attached() fonction avec .addEventListener() est-il un meilleur moyen?

+0

Avez-vous essayé? Ça fonctionne bien pour moi. – Tom

+0

@ thebluefox Je l'ai maintenant et oui ça marche, je regardais les docs et je ne l'ai pas vu nulle part, alors j'ai juste (bêtement) supposé que seules les fonctions étaient autorisées. –

+0

Oui, ce n'est pas mentionné dans les docs. Aurelia est un excellent cadre mais les docs ne le font pas justice par endroits. – Tom

Répondre

1

Comme @thebluefox a souligné dans la question commente

<div mousedown.delegate="isDraggable ? handleMouseDown($event) : null"></div>

ne fonctionne cependant il y a quelques problèmes lors de l'ajout d'un comportement de liaison.

Les exemples suivants échouent lorsque l'évaluation de la

<div mousedown.delegate="isDraggable ? handleMouseDown($event) & throttle:500 : null"></div>

<div mousedown.delegate="isDraggable ? (handleMouseDown($event) & throttle:500) : null"></div>

ternaire Pour contourner ce problème, vous pouvez inverser le test si la liaison est le dernier exemple

<div mousemove.delegate="!isDraggable ? null : handleMouseMove($event) & throttle:500 "></div>