javascript - 检查 ng-repeat 在过滤器后是否产生空集

标签 javascript angularjs angularjs-ng-repeat

我正在尝试这样做:

  • ng-重复大约 50 项的列表
  • 根据文本字段对其进行过滤 (ng-repeat="note in Notes|filter:basicFilter")
  • 如果基本过滤器未产生任何结果(或者可能有 5 个结果),请执行 $http 调用以对数据库进行深度搜索

有没有办法检查过滤器在“基本”过滤器之后产生的结果,以便我可以执行 $http 回调到服务器?是否有一个内置于 Angular “过滤器”可供我调用?

我尝试观察变量:

  $scope.$watch('filtered_notes', function() {
    // can't do this
  });

其中 ng-repeat="filtered_notes 中的注释 = (notes | orderBy:['-note_time']|filter:noteFilter|limitTo:limit)"

但是,它会抛出一个错误:未捕获错误:[$rootScope:infdig] 已达到 10 $digest() 迭代。正在中止!

最佳答案

您可以创建自定义过滤器,如下例所示

HTML

<div ng-repeat="note in filtered_notes |  myCustomFilter:theInput">

自定义过滤器JS

 iApp.filter('myCustomFilter', function() {
   return function( notes, input) {
    var filtered = [];

    angular.forEach(notes, function(item) {
       if(/* do any condition with 'input' */) {
          filtered.push(item);
        }

    });

    if(filtered.length >= 5 ){
         /* do HTTP call or use $broadcast to trigger HTTP call*/
    }

    return filtered;
  };

关于javascript - 检查 ng-repeat 在过滤器后是否产生空集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25430698/

相关文章:

angularjs - 设置 Angular 基础以使用带有 Angular 的显示模态

javascript - angular js - 无法访问推送到 Controller 中数组的对象

javascript - 为什么传递给 replace() 函数的替换字符串中的 $ 有时会中断?

javascript - 在 React 中为 div 添加背景图片?

javascript - 从命令行使用 rollup.js 时是否有监视选项

javascript - 重用共享 Controller 的功能,为每个页面维护单独的状态

javascript - 无法读取未定义的属性 'toLowerCase' (Angularjs/JavaScript/Json)

javascript - 动画每个 ng-repeat 迭代

angularjs - AngularJS Controller 或指令中的 Jquery 动画?

javascript - jquery 自动完成文本框不适用于更新面板