Javascript 在angular js 1.6.2中使用自定义过滤器

Javascript 在angular js 1.6.2中使用自定义过滤器,javascript,angularjs,angularjs-ng-repeat,angular-filters,Javascript,Angularjs,Angularjs Ng Repeat,Angular Filters,然而,在将angular js库升级到1.6.2之后,下面的代码片段在angular 1.4.2上运行得非常好 我已经搜索了迁移/升级文档..等等。没有找到解决办法 HTML代码: <input ng-model="query" type="text" name="js_filter" > javascript代码段: myControllers.controller('myContrBasic', ['$scope', '$http', function ($scope,

然而,在将angular js库升级到1.6.2之后,下面的代码片段在angular 1.4.2上运行得非常好

我已经搜索了迁移/升级文档..等等。没有找到解决办法

HTML代码:

<input ng-model="query" type="text" name="js_filter" >
javascript代码段:

myControllers.controller('myContrBasic', ['$scope', '$http',
    function ($scope, $http) {

    $scope.magikFilterQuery = function (item) {
        var term;
        var part;
        if (angular.isUndefined($scope.query) === false) {
          if ($scope.matchcase === true) {
            term = item.data[3];
            part = $scope.query;
          }
          else {
            term = angular.lowercase(item.data[3]);
            part = angular.lowercase($scope.query);
          }
          if (term.indexOf(part) === -1) {
            return false;
          }
          else {
            return true;
          }
        }
        else {
          return true;
        }
      };
升级angular js后出错:

angular.js:14362 Error: [$injector:unpr] http://errors.angularjs.org/1.6.2/$injector/unpr?p0=magikFilterQueryFilterProvider%20%3C-%20magikFilterQueryFilter
    at http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:6:425
    at http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:44:374
    at Object.d [as get] (http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:42:92)
    at http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:44:436
    at Object.d [as get] (http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:42:92)
    at http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:163:474
    at U (http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:125:13)
    at http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:123:123
    at q (http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:7:351)
    at U (http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:123:102) <!-- ngRepeat: datarow in  (tbItems.rows | magikFilterQuery ) as resultItems -->
angular.js:14362错误:[$injector:unpr]http://errors.angularjs.org/1.6.2/$injector/unpr?p0=magikFilterQueryFilterProvider%20%3C-%20magikFilterQueryFilter
在http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:6:425
在http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:44:374
在Object.d[as get](http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:42:92)
在http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:44:436
在Object.d[as get](http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:42:92)
在http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:163:474
在美国(http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:125:13)
在http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:123:123
在q(http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:7:351)
在美国(http://localhost/site82/folder/js/angular162/angular.min.js?v=8.2.6:123:102) 

您需要为函数magikFilterQuery定义一个过滤器,如

angular.module('myApp').filter('magikFilterQuery', function() {
  return function(item) {
    var term;
    var part;
    if (angular.isUndefined($scope.query) === false) {
      if ($scope.matchcase === true) {
        term = item.data[3];
        part = $scope.query;
      }
      else {
        term = angular.lowercase(item.data[3]);
        part = angular.lowercase($scope.query);
      }
      if (term.indexOf(part) === -1) {
        return false;
      }
      else {
        return true;
      }
    }
    else {
      return true;
    }
  }
});

请在控制器中插入$filter,然后tryno-luck,得到相同的错误。或者,我看到一些站点正在使用
.filter()
函数。。我能用这个吗。。。在这种情况下,myControllers.controller('myContrBasic',['$scope','$filter','$http',函数($scope,$filter,$http){}您是这样注入的吗?是的,
myControllers.controller('myContrBasic',['$scope','$http','$filter',函数($scope,$http,$filter){
使用此选项,我将在
项中获取整个对象,是否需要再次对其进行迭代?好的,我找到了一个解决方案,我已编辑了上面的代码片段。
angular.module('myApp').filter('magikFilterQuery', function() {
  return function(item) {
    var term;
    var part;
    if (angular.isUndefined($scope.query) === false) {
      if ($scope.matchcase === true) {
        term = item.data[3];
        part = $scope.query;
      }
      else {
        term = angular.lowercase(item.data[3]);
        part = angular.lowercase($scope.query);
      }
      if (term.indexOf(part) === -1) {
        return false;
      }
      else {
        return true;
      }
    }
    else {
      return true;
    }
  }
});