Javascript $filter不是AngularJS函数
上面是我试图在Javascript $filter不是AngularJS函数,javascript,angularjs,angularjs-scope,angularjs-filter,angularjs-http,Javascript,Angularjs,Angularjs Scope,Angularjs Filter,Angularjs Http,上面是我试图在控制器中使用$http.get和$filter的代码示例 唯一的问题是,当我这样使用它时,控制台日志会抛出一个错误,表明$filter不是一个函数 app.controller('myController', ['$scope', '$http', '$filter', function($scope, $http, $filter) { 当我交换它们时,它会抛出一个错误,即当您使用 app.controller('myController', ['$scope', '$http
控制器中使用$http.get
和$filter
的代码示例
唯一的问题是,当我这样使用它时,控制台日志会抛出一个错误,表明$filter不是一个函数
app.controller('myController', ['$scope', '$http', '$filter', function($scope, $http, $filter) {
当我交换它们时,它会抛出一个错误,即当您使用
app.controller('myController', ['$scope', '$http', '$filter', function($scope, $filter, $http) {
变量$filter
实际上是$http
的实例,$http
是$filter
的实例。实际上,在函数(…)
参数中写入什么并不重要
这里重要的是,你使用的注射剂的顺序,例如
app.controller('myController', ['$scope', '$http', '$filter', function($scope, $filter, $http) {
将映射到以下实例:
- a->范围
- b->$http
- c->$过滤器
来自angular docs:
由于Angular根据控制器构造函数的参数名称推断控制器的依赖关系,因此如果要缩小PhoneListCtrl控制器的JavaScript代码,其所有函数参数也将缩小,依赖关系注入器将无法正确识别服务
因此,通过对控制器使用数组表示法,您可以确保代码在缩小后仍能工作。在http和angular版本之后添加过滤器也可以保护您的工作方式
将使用过滤器
app.controller('myController', ['$scope', '$http', '$filter', function(a, b, c) {
在我的例子中,通过确保预期的列表对象不为null,预期的数据列表对象为null。我能够避免这个错误 您必须在依赖项列表中声明$filter
,即['$scope','$http','$filter',函数($scope,$http,$filter){…
@NikosParaskevopoulos抱歉,我忘了将其添加到示例中,它在依赖项列表中显示了此错误。好的;这里有一些非常可疑的地方。此代码应该可以工作。您能用fiddle/plunk重现此问题吗?您最终是如何解决此问题的?我遇到了相同的问题,下面标记的答案无效ing.我的订单正确无误,伙计..你救了我..谢谢虽然不是确切的场景,与http冲突,但我仍然发现更改订单解决了我的问题
plateFormController.$inject = ['$scope', '$http',
'$filter','$timeout', '$q', '$mdSidenav', '$log'];
function plateFormController($scope, $http,$filter, $timeout, $q) {
jsonByName=$filter('filter')($scope.json, { name: 'a' });
}