Passer automatiquement $event avec ng-click?

Je sais que je peux avoir accès à l'événement click de ng-click si je passe dans le $event objet comme suit:

<button ng-click="myFunction($event)">Give me the $event</button>

<script>
  function myFunction (event) {
    typeof event !== "undefined" //true
  }
</script>

C'est un peu ennuyeux d'avoir à passer $event explicitement à chaque fois. Est-il possible de ng-click de quelque sorte de le passer à la fonction par défaut?

  • Je sais que le code est juste pour la démonstration, mais undefined devrait être "undefined", sinon l'expression sera toujours la valeur false comme typeof retourne une chaîne de caractères.
  • Je me demande pourquoi vous avez besoin de $event de toute façon.
  • Objet événement est généralement utilisé pour arrêter la formation de bulles ou de propagation.
  • myFunction fait partie d'un contrôleur. Un contrôleur ne se soucient pas de l'INTERFACE utilisateur. En outre, un simple bouton n'a aucune action par défaut. Et angulaire permet de prévenir de nombreuses actions par défaut de toute façon. Ainsi, alors que vous avez raison, bien sûr, il est difficile d'imaginer un cas d'utilisation.
  • J'ai une directive contextMenu qui propose plusieurs fonctions de l'étendue (ouvrir, fermer, interrupteur à bascule), qui sont appelées par le nom d'une contextMenu, par exemple,ng-click="account_menu.toggle()". Le menu lui-même est dans un autre élément, par exemple <div context-menu="account_menu"></div>". Afin de positionner le menu correctement sur la page juste en dessous de l'élément déclencheur qui a appelé toggle(), je veux avoir accès à ng-click's $event.target élément, de sorte que je puisse obtenir ses coordonnées. Ne laissez-moi savoir si il existe un moyen plus simple 🙂
  • Bonne prise, je vais corriger cela 🙂
  • c'est mon point de vue. C'est des éléments d'INTERFACE utilisateur et doit absolument être traitée par une directive. contextMenu devrait être auto-contenant.
  • Oui, contextMenu est une auto-contenant de la directive dont les fonctions open, close, et toggle sont ceux qui veulent avoir accès à $event. ng-click est simplement utilisée pour déclencher ces fonctions (dans les contextMenu la directive). Le point est que je devrais être en mesure d'utiliser n'importe quel de ng-click, ng-mouseover, etc, pour gérer les différentes contextMenus différemment. Si vous êtes intéressés, voici une très simplifiée exemple jsfiddle.net/uYayL/1.
  • Bonjour, Elise. Veuillez jeter un oeil à ce violon. C'est une mise en œuvre limitée, mais vous obtenez l'idée. Vous ne déclarez une directive, tous les (UI) d'action est gérée par la directive elle-même.
  • Merci de prendre le temps d'expliquer, je comprends votre idée. Cependant, je pense qu'il rend plus de sens (dans mon projet spécifique au moins) pour le contextMenu pour encapsuler le comportement du menu réel, et non l'arbitraire d'un élément de déclenchement des actions. Je veux dire, le bouton n'est pas le menu 🙂 de toute façon, la manipulation de l'INTERFACE utilisateur est capturé à l'intérieur d'une seule directive.
  • C' ne capturer le comportement du menu et le bouton a un menu contextuel. L'arbitraire d'un élément n'est pas un titre, mais il a un title attribut. Qui à son tour déclenche une fenêtre sur le vol stationnaire. C'est le même concept. Et non: dans votre cas, la ng-click ne l'INTERFACE utilisateur de la manipulation. Le fait qu'il appelle une méthode quelque part d'autre ne change pas.
  • C'est juste un point, la title attribut argument est très convaincant.. Alors, comment voulez-vous gérer une situation où les différents boutons de la nécessité de déclencher le menu contextuel de différentes façons (par exemple avec un hover, l'un avec la souris), tandis que le menu lui-même ressemble et se comporte exactement de la même chose?
  • laissez-nous continuer cette discussion dans le chat

InformationsquelleAutor Elise | 2014-01-13