Ich versuche, jquery aus meiner Angular.js-App zu entfernen, um sie leichter zu machen, und stattdessen Angulars jqLite zu verwenden. Die App verwendet jedoch häufig find ('# id') und find ('.classname'), die von jqLite nicht unterstützt werden, sondern nur 'tag names' (gemäß Dokumentation).
Ich fragte mich, was Ihrer Meinung nach der beste Ansatz wäre, um es zu ändern. Ein Ansatz, über den ich nachgedacht habe, ist das Erstellen benutzerdefinierter HTML-Tags. Zum Beispiel: ändern
<span class="btn btn-large" id="add-to-bag">Add to bag</span>
zu
<a2b style="display:none;"><span class="btn btn-large" >Add to bag</span></a2b>
und
$element.find('#add-to-bag')
zu
$element.find('a2b')
Irgendwelche Gedanken? andere Ideen?
Vielen Dank
Lior
DomElement.querySelector(".myclassname")
ein einzelnes dekendierendes Element mit einem CSS-Selektor oder alle übereinstimmenden Elemente auswählen, indem Sie Alle hinzufügen:DomElement.querySelectorAll(".myclassname")
Das funktioniert natürlich nicht in IE <9.a2b
Element definieren , müssen Sie eine Direktive definiert haben. Können Sie das tun, was in der Link-Funktion der Direktive zu tun ist, und daher die Notwendigkeit vermeiden, find () vollständig aufzurufen? Ähnlich wie bei Ihren Klassen - können Sie Direktiven definieren und die benötigte Funktionalität in die Verknüpfungs- (oder Kompilierungs-) Funktionen der Direktiven einfügen?Antworten:
Im Wesentlichen und wie von @ kevin-b angegeben:
Hinweis: Wenn Sie dies von Ihren Controllern aus tun möchten, sollten Sie sich den Abschnitt "Controller richtig verwenden" im Entwicklerhandbuch ansehen und Ihre Präsentationslogik in entsprechende Anweisungen umgestalten (z. B. <a2b ...>). .
quelle
angular.element(elem[0].querySelector('.classname'));
angualr verwendet die leichtere Version von jquery namens jqlite, was bedeutet, dass es nicht alle Funktionen von jQuery bietet. Hier finden Sie eine Referenz in AngularJS-Dokumenten darüber, was Sie in jquery verwenden können. Angular Element docs
In Ihrem Fall müssen Sie ein div mit ID oder Klassennamen finden. für den Klassennamen können Sie verwenden
oder Sie können den Abfrageauswähler viel einfacher verwenden
es ist nicht so flexibel wie jQuery, aber was
quelle
Wenn
elem.find()
dies bei Ihnen nicht funktioniert, überprüfen Sie, ob Sie das JQuery-Skript vor dem Winkelskript einschließen .quelle