わかりました。AngularJS を操作するときにコントローラーで DOM 操作を行うのは悪い習慣と見なされていることはわかっています。そのためにはディレクティブと $scope を使用する必要がありますが、イベント バインディングはどうでしょうか? 見た目からすると、ngClick、ngMousedown、ngMouseenter などのすべての組み込みイベント ディレクティブを考慮すると、これも眉をひそめられます...しかし、そうであれば、方法がわからないコードがあります。 AngularJS の方法を実行します。
私が構築しているアプリケーションには無限スクロールがあり、次のコードで実装されています (現在コントローラーに存在します)。
$(document).bind('scroll', function(){
if(!$scope.loadingIssues && $(window).scrollTop() + $(window).height() >= $('.user-feedback-list').offset().top + $('.user-feedback-list').height()) {
$scope.loadIssues();
}
});
これにより、ユーザーはページをスクロールでき、ページが無限スクロールを持つデータを格納している要素の一番下に到達すると、関数が起動されてさらにデータが読み込まれます。今、私は DOM 操作を行っていません。すべての関数は $scope に添付されたデータを更新するだけで、AngularJS に DOM の更新を行わせますが、このイベントは AngularJS のベスト プラクティスに対してバインドされていますか? もしそうなら、どうすればAngularJSの方法でこれを行うことができますか(ドキュメントオブジェクトにディレクティブを添付することはできないと思うので、この場合ディレクティブは機能しないと思います)?