Ho alcune direttive personalizzate che usano jQuery per effetti di animazione (il built-in di ngShow/ngHide di angular è funzionale, ma non bello). Penso di ricordare di aver letto nella documentazione da qualche parte che l'angolare ha il proprio selettore DOM (qualcosa come angular.export()
o angular.select()
) che dovrei usare al posto di $(SELECTOR)
; tuttavia non riesco a trovarlo ora.Selettore angularJS DOM
che sto facendo qualcosa di simile:
//view
<div scroll-to="element"> //`element` is set via ng-click
…
</div>
//directive
link: function(scope, elm, attrs)
{
scope.$watch(attrs.scrollTo, function scrollToAction(newValue,oldValue)
{
if (newValue !== oldValue)
{
elm.animate({
scrollTop:
$('#'+newValue).offset().top //replace jquery selector with angular's
- elm.offset().top
+ elm.scrollTop()
});
}
});
}
Non sto davvero manipolare $('#'+newValue)
, solo il recupero di informazioni su di esso, quindi non pensare che sto commettendo un crimine contro l'angolare.
+1 Ho aggiunto anche informazioni aggiuntive che potrebbero spiegare perché l'OP ritiene di aver visto un metodo angolare con cui è possibile selezionare gli elementi. –
Ah grazie, sì è esattamente così. Includo jquery prima angolare, quindi è ancora 'angular.element()' preferibile? Sembra che aggiungerebbe solo un sovraccarico extra per risolvere l'alias. – jacob
@jacob, vorrei usare 'angular.element()' in modo che se in futuro il tuo codice non avesse più bisogno di jQuery, non dovrai aggiornarlo. –