Próbuję usunąć jquery z mojej aplikacji Angular.js, aby była lżejsza, i zamiast tego umieścić jqLite Angulara. Jednak aplikacja w dużym stopniu korzysta z funkcji find („# id”) i find („.classname”), które nie są obsługiwane przez jqLite, tylko „nazwy tagów” (zgodnie z dokumentacją)
zastanawiałeś się, jakie według ciebie byłoby najlepsze podejście do zmiany tego. Jedno podejście, o którym myślałem, to tworzenie niestandardowych tagów HTML. na przykład: zmiana
<span class="btn btn-large" id="add-to-bag">Add to bag</span>
do
<a2b style="display:none;"><span class="btn btn-large" >Add to bag</span></a2b>
i
$element.find('#add-to-bag')
do
$element.find('a2b')
jakieś pomysły? inne pomysły?
dzięki
Lior
DomElement.querySelector(".myclassname")
aby wybrać pojedynczy element decendant za pomocą selektora css lub wszystkie pasujące, dodając do niego All:DomElement.querySelectorAll(".myclassname")
To oczywiście nie działa w IE <9.a2b
element, musisz zdefiniować dyrektywę. Czy możesz zrobić, co należy zrobić w funkcji link dyrektywy, a tym samym całkowicie uniknąć konieczności wywoływania funkcji find ()? Podobnie z twoimi klasami - czy możesz zdefiniować dyrektywy i umieścić potrzebną funkcjonalność w funkcjach linkujących (lub kompilujących) dyrektyw?Odpowiedzi:
Zasadniczo i jak zauważył @ kevin-b:
Uwaga: jeśli chcesz to zrobić ze swoich kontrolerów, możesz zajrzeć do sekcji „Prawidłowe używanie kontrolerów” w przewodniku dla programistów i zmienić logikę prezentacji na odpowiednie dyrektywy (takie jak <a2b ...>) .
źródło
angular.element(elem[0].querySelector('.classname'));
angualr używa lżejszej wersji jquery zwanej jqlite, co oznacza, że nie posiada wszystkich funkcji jQuery. tutaj jest odniesienie w dokumentach angularjs o tym, czego można użyć z jquery. Angular Element docs
W twoim przypadku musisz znaleźć div z identyfikatorem lub nazwą klasy. dla nazwy klasy, której możesz użyć
lub możesz użyć znacznie prostszego sposobu za pomocą selektora zapytań
nie jest tak elastyczny jak jQuery, ale co
źródło
Jeśli
elem.find()
to nie działa, sprawdź, czy dołączasz skrypt JQuery przed skryptem kątowym ....źródło