la méthode addEventListener à la directive simple exemple dans AngularJS
Essayer d'obtenir cette très directive de base de l'exemple du travail. À partir de quelques investigations, 'elem' semble être un objet de HTMLHeadingElement (qui hérite de l'Élément). Je ne sais pas pourquoi elem.la méthode addEventListener ne fonctionnerait pas. Aussi, elem.lier semble fonctionner mais ce n'est pas le mondial de lier, droit?
Aussi, ce serait génial si quelqu'un pouvait toucher Modèle d'Objet de Document (DOM) Niveau 2 Spécification HTML vs Modèle d'Objet de Document (DOM) Niveau 1 cahier des charges. Arrivé de tomber sur ce pour la première fois, est-ce une nouvelle hiérarchie d'Objets pour les éléments du DOM?
Ci-dessous est le lien de la directive:-
link: function(scope, elem, attrs) {
//elem will be HTMLHeadingElement object!
scope.name = 'New Micheal!';
elem.addEventListener('click', function(e) {
elem.css('background-color', 'red');
})
/*elem.bind('mouseover', function(e) {
elem.css('background-color', 'red');
});
elem.bind('mouseout', function(e) {
elem.css('background-color', 'white');
});*/
}
Vous devez vous connecter pour publier un commentaire.
elem
est un jquery (ou jqlite) enveloppé élément. Ce n'est pas une instance deHTMLHeadingElement
(bien que le sous-jacent enveloppé instance peut être consulté).Pour ajouter le gestionnaire de clic, vous devriez être en utilisant:
elem.click(function(e) { ... });
au lieu deaddEventListener
.MODIFIER
L'approche ci-dessus ne fonctionne que si vous utilisez jquery bon (ne jqlite). Cependant, en général, vous ne devriez pas être en ajoutant des gestionnaires par le biais de JS. L'angle moyen est de le faire dans le modèle.
Quelque chose comme ceci:
Et dans le modèle:
Dans cet exemple, en cliquant sur les
div
fera appel à la couleur de gestionnaire.Ce n'est pas encore canonique angulaire, car tu dois être la manipulation css changements par le biais de changements dans les classes css et
ng-class
, mais cela devient de plus près et j'espère que ça illustre bien le propos.click()
à moins d'utiliser jQuery...si c'est jQlite utiliserbind('click'
[[ ]]
jquery/jqlite objet enveloppé est enveloppé dans un tableau (avec des méthodes supplémentaires sur le prototype). Donc, ce que vous voyez est ce que vous avez un tableau de longueur 1, où l'élément est un HTMLDivElement.elem
n'est pas un élément du DOM, c'est un jQlite objet (angulaire.un élément ou un objet jQuery si jQuery inclus dans la page d'avant angular.jsLe nœud DOM est
elem[0]
Pouvez utiliser le angulaire.élément de l'API qui est un sous-ensemble de méthodes jQuery.
Pour écouteur de clics serait:
Non...c'est une partie de l'API ci-dessus et les matches de jQuery
bind()
Vous avez 2 jQlite et options javascript:
javascript:
jQlite: