$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 不是函数