2017-09-21 4 views
1

J'ai un composant de braise qui génère une liste de groupes d'utilisateurs. Lorsqu'un utilisateur clique sur l'un des composants de la liste, il appelle une action linkAction définie dans le composant et amène l'utilisateur à la page particulière associée à cet élément de liste. Cependant, lorsqu'un utilisateur clique sur ce composant, l'utilisateur est alors amené à/# par défaut et je n'arrive pas à comprendre comment gérer ce comportement.Comment gérer le clic du milieu de la souris?

Pour référence, voici le composant tel que vu dans le modèle.

{{student-group-item linkAction='drillToGroup' drillId=teacherGroup.id 
       group_name=teacherGroup.studentGroupName 
       meta_class="quiz-item-meta" 
       item_1_title= teacherGroup.numStudentsDisplay 
       item_1_class="group-count" 
       item_2_title=teacherGroup.createdDate 
       item_2_class="created-on" 
       item_3_title=teacherGroup.shortDescription 
       item_3_class="group-desc"}} 

et l'action drillToGroup effectue les opérations suivantes

drillToGroup: function(id) { 
    this.transitionTo('student-group',id); 
}, 

Comment puis-je faire de ce composant à répondre de la souris cliquez?

Répondre

2

Cette réponse s'applique à Ember 2.x.x et a été écrite à partir de la version 2.15.

Par défaut, les événements de fermeture reçoivent l'événement en tant qu'argument par défaut. Pour une raison quelconque, mousedown will detect middle clicks. Onclick régulier ne fonctionne pas.

Dans votre modèle:

<button onmousedown={{action "clicked"}}>button</button> 

Dans votre js composant:

actions: { 
    clicked(event) { 
    console.log(event.button) 
    // do things based on button value of 0, 1, or 2. 1 is middle. 
    } 
} 

Vous pouvez en savoir plus sur la gestion des événements de Braise à The Guides. L'attribut de bouton d'un événement click peut être trouvé dans MDN docs.

Soyez prudent lors du remplacement des clics du milieu et du clic droit. Cela pourrait conduire à une interface utilisateur problématique pour certains cas d'utilisation. Il n'y a pas d'équivalent direct pour le toucher/mobile, et beaucoup de souris n'ont pas de roues.