$filter 不是一个函数 AngularJS

Posted

技术标签:

【中文标题】$filter 不是一个函数 AngularJS【英文标题】:$filter is not a function AngularJS 【发布时间】:2014-08-08 16:42:28 【问题描述】:
app.controller('myController', ['$scope', '$http', '$filter', function($scope, $http, $filter) 

以上是我尝试在controller 中使用$http.get$filter 的代码示例。

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

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

当我交换它们时,它会抛出一个错误,$http is undefined

【问题讨论】:

你必须在依赖列表中声明$filter,即['$scope', '$http', '$filter', function($scope, $http, $filter) ... @NikosParaskevopoulos 对不起,我忘了将它添加到示例中,它在依赖项列表中显示了错误。 好的;这里有一些非常可疑的东西。此代码应该有效。你能用小提琴/笨拙的方式重现这个问题吗? 您最后是如何解决这个问题的?我遇到了同样的问题,下面标记的答案不起作用。我有正确的订单 【参考方案1】:

在我的情况下,通过确保预期的列表对象不为空,预期的数据列表对象为空。我能够避免这个错误。

【讨论】:

【参考方案2】:

在 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' );
        

【讨论】:

【参考方案3】:

使用时

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

变量$filter实际上是$http的实例,$http$filter的实例。其实function(...)params里写什么并不重要。

这里重要的是您使用的注射剂的顺序,例如

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

将映射到实例:

a -> 范围 b -> $http c -> $过滤器

来自角度文档:

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

因此,通过对您的控制器使用数组表示法,您可以确保代码在代码缩小后仍然可以工作。

【讨论】:

老兄..你救了我..谢谢 虽然不是确切的场景,与 http 冲突,但我仍然发现更改顺序解决了我的问题

以上是关于$filter 不是一个函数 AngularJS的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript this.todoList.filter 不是函数

TypeError:this.results.filter 不是 Vuejs 搜索框中的函数

Nuxt/Vue-meta:info.meta.filter 不是函数

Python常用内置函数整理(lambda,reduce,zip,filter,map)

js中filter函数

PHP filter_list() 函数