ngRepeat でのフィルタリングが発生したときに、ディレクティブ内からフィルタリング イベントを監視したいと思います。フィルタリングが発生したときに発行されるイベントはありますか?
私がやっていることは、サムネイルのリストの画像の遅延読み込みを実装することです。動作しますが、フィルタリングを開始すると、ビューポートの外にあり、フィルタリング後に表示される画像は、ng-src 属性を置き換える必要があります。
ディレクティブは次のとおりです。
TemplateBrowser.directive('lazySrc', function() {
return function(scope, element, attrs) {
function replaceSrc() {
if (element.is(":in-viewport")) {
attrs.$set('ngSrc', attrs.lazySrc);
}
}
$(window).scroll( function() {
replaceSrc();
});
scope.$watch('filteredTemplates', function() {
replaceSrc();
});
};
});
HTML
<li ng-repeat="template in filteredTemplates = ( templates | filterByCategory: selectedCategories | filter: searchFilter )">
<img ng-src="" lazy-src="{{template.cover.thumb.url}}" alt="">
</li>
現在、次のエラーが発生します。
Error: 10 $digest() iterations reached. Aborting!
TLDR: フィルタリングされたコレクションの変更を監視する代わりに、ディレクティブがリッスンする何らかのフィルタリング イベントを発行する方法はありますか? (フィルタリングは、検索フィールドとカテゴリ選択メニューで行われます)