J'essaie de supprimer jquery de mon application Angular.js afin de l'alléger, et de mettre le jqLite d'Angular à la place. Mais l'application fait un usage intensif de find ('# id') et find ('.classname'), qui ne sont pas pris en charge par jqLite, uniquement 'tag names' (selon la documentation)
Je me suis demandé quelle serait la meilleure approche pour le changer. Une approche à laquelle j'ai pensé est de créer des balises HTML personnalisées. par exemple: changer
<span class="btn btn-large" id="add-to-bag">Add to bag</span>
à
<a2b style="display:none;"><span class="btn btn-large" >Add to bag</span></a2b>
et
$element.find('#add-to-bag')
à
$element.find('a2b')
Des pensées? d'autres idées?
Merci
Lior
DomElement.querySelector(".myclassname")
pour sélectionner un élément décendant unique à l'aide d'un sélecteur css, ou tout ce qui correspond en y ajoutant Tout:DomElement.querySelectorAll(".myclassname")
cela ne fonctionne bien sûr pas dans IE <9.a2b
élément, vous devez avoir défini une directive. Pouvez-vous faire ce qui doit être fait dans la fonction de lien de la directive, et ainsi éviter le besoin d'appeler entièrement find ()? De même avec vos classes - pouvez-vous définir des directives et mettre les fonctionnalités dont vous avez besoin dans les fonctions de liaison (ou de compilation) des directives?Réponses:
Essentiellement, et comme noté par @ kevin-b:
Remarque: Si vous cherchez à faire cela à partir de vos contrôleurs, vous pouvez consulter la section «Utilisation correcte des contrôleurs» dans le guide des développeurs et refactoriser votre logique de présentation en directives appropriées (telles que <a2b ...>) .
la source
angular.element(elem[0].querySelector('.classname'));
angualr utilise la version allégée de jquery appelée jqlite, ce qui signifie qu'elle n'a pas toutes les fonctionnalités de jQuery. voici une référence dans la documentation angularjs sur ce que vous pouvez utiliser de jquery. Documents sur les éléments angulaires
Dans votre cas, vous devez trouver un div avec un identifiant ou un nom de classe. pour le nom de la classe, vous pouvez utiliser
ou vous pouvez utiliser un moyen beaucoup plus simple par le sélecteur de requête
ce n'est pas aussi flexible que jQuery mais quoi
la source
Si cela
elem.find()
ne fonctionne pas pour vous, vérifiez que vous incluez le script JQuery avant le script angulaire ....la source