J'utilise à la fois Bootstrap et AngularJS dans mon application Web. J'ai de la difficulté à faire fonctionner les deux.
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 l' data-source
attribut lorsque l'utilisateur entre dans le champ. La fonction updateTypeahead
est déclenchée correctement, mais je n'ai pas accès à l'élément qui a déclenché l'événement, sauf si j'utilise $('#searchText')
, qui est la manière jQuery, pas la manière AngularJS.
Quelle est la meilleure façon de faire fonctionner AngularJS avec le module JS à l'ancienne.
la source
<li ng-repeat="item in items" role="menuitem" ng-class="{\'selected\' : isSelected($event, item)}">
La façon générale Angular d'accéder à un élément qui a déclenché un événement est d'écrire une directive et bind () à l'événement souhaité:
ou avec DDO (selon le commentaire de @ tpartee ci-dessous):
La directive ci-dessus peut être utilisée comme suit:
Plunker .
Tapez dans le champ de texte, puis laissez / floutez. La fonction de rappel de changement se déclenchera. Dans cette fonction de rappel, vous avez accès à
element
.Certaines directives intégrées prennent en charge le passage d'un objet $ event. Par exemple, ng- * clic, ng-souris *. Notez que ng-change ne prend pas en charge cet événement.
Bien que vous puissiez obtenir l'élément via l'objet $ event:
cela va "profondément contre la voie angulaire" - Misko .
la source
vous pouvez obtenir facilement comme ce premier événement d'écriture sur l'élément
et dans votre fichier js comme ci-dessous
Je l'ai aussi utilisé.
la source
Il existe une solution utilisant $ element dans le contrôleur si vous ne souhaitez pas créer une autre directive pour ce problème:
Et cela fonctionnera avec ng-change :
la source
si vous voulez une valeur de ng-model, si vous pouvez écrire comme ceci dans l'événement déclenché: $ scope.searchText
la source
Je ne sais pas quelle version vous aviez, mais cette question a été posée il y a longtemps. Actuellement avec Angular 1.5, je peux utiliser l'
ng-keypress
événement et ladebounce
fonction de Lodash pour émuler un comportement similaireng-change
, afin de pouvoir capturer l'événement $la source
Pour passer l'élément source dans Angular 5:
la source