$ filter不是AngularJS的函数

时间:2014-06-18 11:43:18

标签: javascript angularjs angularjs-scope angularjs-filter angularjs-http

app.controller('myController', ['$scope', '$http', '$filter', function($scope, $http, $filter) {

以上是我的代码示例,我尝试在$http.get内使用$filtercontroller

唯一的问题是,当我这样使用它时,控制台日志会抛出一个错误$filter is not a function

app.controller('myController', ['$scope', '$http', '$filter', function($scope, $filter, $http) {

当我将它们交换时,会抛出$http is undefined

的错误

3 个答案:

答案 0 :(得分:24)

使用时

app.controller('myController', ['$scope', '$http', '$filter', function($scope, $filter, $http) {

变量$filter实际上是$http的实例,$http$filter的实例。实际上,function(...)参数中的内容并不重要。

这里重要的是你正在使用的注射器的顺序,例如

app.controller('myController', ['$scope', '$http', '$filter', function(a, b, c) {

将映射到实例:

  • a - >范围
  • b - > $ HTTP
  • c - > $过滤

来自angular docs:

  

由于Angular将控制器的依赖关系从参数名称推断到控制器的构造函数,如果你要缩小PhoneListCtrl控制器的JavaScript代码,它的所有函数参数也会缩小,并且依赖注入器也不会能够正确识别服务。

因此,通过为yout控制器使用数组表示法,您可以确保在代码缩小后代码可以正常工作。

答案 1 :(得分:1)

在http和angular版本之后添加过滤器也可以保护你的样子     要使用过滤器。

     plateFormController.$inject = ['$scope', '$http',
    '$filter','$timeout', '$q', '$mdSidenav', '$log'];



function plateFormController($scope, $http,$filter, $timeout, $q) {
          jsonByName=$filter('filter')($scope.json, { name: 'a' });
        }

答案 2 :(得分:0)

在我的情况下,通过确保期望的List Object不为null,期望数据List对象为null。我能够避免这个错误。