当对 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: 有没有办法发出某种过滤事件,而不是观察过滤集合的变化?(通过搜索字段和类别选择菜单进行过滤)