app.controller('myController', ['$scope', '$http', '$filter', function($scope, $http, $filter) {
以上是我的代码示例,我尝试在$http.get
内使用$filter
和controller
。
唯一的问题是,当我这样使用它时,控制台日志会抛出一个错误$filter is not a function
。
app.controller('myController', ['$scope', '$http', '$filter', function($scope, $filter, $http) {
当我将它们交换时,会抛出$http is undefined
答案 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) {
将映射到实例:
来自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。我能够避免这个错误。