dans angularjs comment accéder à l'élément qui a déclenché l'événement?
J'utilise à la fois le "Bootstrap" et AngularJS dans mon application web. J'ai un peu de difficulté à obtenir les deux de travailler ensemble.
J'ai un élément qui a l'attribut data-provide="typeahead"
<input id="searchText" ng-model="searchText" type="text"
class="input-medium search-query" placeholder="title"
data-provide="typeahead" ng-change="updateTypeahead()" />
Et je veux mettre à jour le data-source
attribut lorsque les entrées d'utilisateur dans le champ. La fonction updateTypeahead
est déclenché correctement, mais je n'ai pas accès à l'élément qui a déclenché l'événement, à moins que j'utilise $('#searchText')
, qui est le jQuery façon, pas le AngularJS façon.
Quelle est la meilleure façon d'obtenir AngularJS à travailler avec l'ancien style JS module.
Vous devez vous connecter pour publier un commentaire.
de ne pas passer à l'élément DOM à la fonction
updateTypeahead(this)
. Icithis
va se référer à la portée.Si vous souhaitez accéder à l'élément DOM utilisationupdateTypeahead($event)
. Dans la fonction de rappel, vous pouvez obtenir l'élément DOM parevent.target
.<li ng-repeat="item in items" role="menuitem" ng-class="{\'selected\' : isSelected($event, item)}">
Le grand Angulaire pour avoir accès à un élément qui a déclenché un événement est de rédiger une directive et bind() pour l'événement de votre choix:
ou à DDO (comme par @tpartee de commentaire ci-dessous):
La directive ci-dessus peuvent être utilisés comme suit:
Plunker.
Tapez dans le champ de texte, puis laisser/flou. Le changement de fonction de rappel d'incendie. À l'intérieur de cette fonction de rappel, vous avez accès à
element
.Certains intégrée dans les directives en charge la transmission d'un objet $event. E. g., ng-*cliquez sur, ng-Souris*. Notez que ng-le changement ne prend pas en charge cet événement.
Bien que vous pouvez obtenir l'élément via l'objet $event:
cela va "profonde contre l'angle de façon" -- Misko.
vous pouvez obtenir facilement comme cette première écriture de l'événement sur l'élément
et dans votre fichier js comme ci-dessous
Je l'ai utilisé en tant que bien.
Il y a une solution à l'aide de $element dans le contrôleur, si vous ne voulez pas créer une autre directive pour ce problème:
Et cela fonctionne avec ng-changement:
si vous voulez ng-valeur de modèle, si vous pouvez l'écrire comme ceci dans le déclenchement d'événements:
$champ d'application.texterecherché
Je ne suis pas sûr de la version que vous avez eu, mais cette question a été posée depuis longtemps. Actuellement Angulaire 1.5, je peux utiliser le
ng-keypress
événement etdebounce
fonction de Lodash à imiter un comportement similaire commeng-change
, afin que je puisse capturer l' $eventPour passer à l'élément source dans Angulaire 5 :
HTML: