Mam kilka niestandardowych dyrektyw, które używają jQuery do efektów animacji (wbudowany kątowy ngShow/ngHide i podobne są funkcjonalne, ale nie ładne). Wydaje mi się, że pamiętam czytanie w dokumentacji gdzieś, że kąt ma własny selektor DOM (coś takiego jak angular.export()
lub angular.select()
), którego powinienem użyć zamiast $(SELECTOR)
; jednak nie mogę go teraz znaleźć.AngularJS DOM selector
robię coś takiego:
//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()
});
}
});
}
nie jestem naprawdę manipulowania $('#'+newValue)
, po prostu pobierając informacje o tym, więc nie sądzę, jestem popełnienia przestępstwa przeciwko kątowe.
+1 Dodałem również dodatkowe informacje, które mogą wyjaśnić, dlaczego OP uważa, że widział metodę kątową, z którą można wybrać elementy. –
Ah dzięki, tak to dokładnie to. Do jockeya dołączam przed kątowością, więc czy 'angular.element()' jest jeszcze bardziej pożądane? Wygląda na to, że spowodowałoby to dodatkowe obciążenie związane z rozwiązaniem aliasu. – jacob
@jacob, użyłbym 'angular.element()', więc jeśli w przyszłości Twój kod nie będzie już wymagał jQuery, nie będziesz musiał go aktualizować. –