アニメーション効果にjQueryを使用するカスタムディレクティブがいくつかあります(angularの組み込みのngShow / ngHideなどは機能しますが、きれいではありません)。どこかでドキュメントを読んだことを覚えていると思いますが、angularには;の代わりに使用する必要のある独自のDOMセレクター(angular.export()
またはのようなもの)があります。しかし、今は見つかりません。angular.select()
$(SELECTOR)
私はこのようなことをしています:
//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()
});
}
});
}
私は実際には操作しておらず$('#'+newValue)
、情報を取得しているだけなので、Angularに対して犯罪を犯しているとは思いません。