Angular Error: [$injector:unpr] Filtering Error
Angular Error: [$injector:unpr] Filtering Error
我有一个 Angular 应用程序向我抛出此错误:
Error: [$injector:unpr] http://errors.angularjs.org/1.2.27/$injector/unpr?p0=advFilterNameFilterProvider%20%3C-%20advFilterNameFilter
at Error (native)
at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:6:450
at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:36:202
at Object.c [as get] (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:34:305)
at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:36:270
at Object.c [as get] (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:34:305)
at $get [as $filter] (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:125:335)
at gb.filter (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:172:465)
at gb.filterChain (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:172:391)
at gb.primary (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:169:270)
根据 Angular 文档的错误报告,我应该四处寻找缺少的提供者。但是,我似乎找不到缺少的东西。这是我的应用程序文件:
angular.module('programApp', [
'ngResource',
'ngRoute',
'programApp.controllers',
'programApp.directives',
'programApp.filters',
'uiSwitch'
]).config(['$locationProvider', '$routeProvider', function($locationProvider, $routeProvider) {
$locationProvider.hashPrefix('');
$locationProvider.html5Mode(true);
}]);;
这是我的控制器文件的顶部:
angular.module('programApp.controllers', [])
.controller('programController', ['$scope', '$http', '$filter', '$timeout', '$rootScope', '$location',
function($scope, $http, $filter, $timeout, $rootScope, $location){
我还有 2 个自定义过滤器:
angular.module('programApp.filters', []).filter('filterName', function(){
//my filter code here
}).filter('advFilterName', function(){
//my other filter code here
});
这是我的一个指令:
angular.module('programApp.directives', [])
.directive('ngEnter', function () {
//directive code here
});
根据错误代码和其他 SO 问题,我认为我应该调查我的过滤器的提供商问题...但我似乎找不到任何问题。
另外,我的 none 代码被缩小了,所以这不是问题。
导致此错误的原因是什么?
问题是您在每次 angular.module
调用时重新创建模块。
在声明您的指令、过滤器和控制器时,从您的 angular.module
调用中省略 []
。
对 angular.module
的标准 2-arg 调用
angular.module('programApp', [])
适合 声明 您的模块...但在随后的 angular.module
调用中包含第二个参数 ([]
) 实际上会重新创建您的模块.
换句话说,一旦你声明了你的 `prgoramApp' 模块,你的过滤器应该这样声明
angular.module('programApp').filter('filterName', function(){
//my filter code here
}).filter('advFilterName', function(){
//my other filter code here
});
(在 angular.module
的调用中没有 []
)
有关这方面的更多信息,请参阅 Creation vs Retrieval section of the Angular Module docs。
我有一个 Angular 应用程序向我抛出此错误:
Error: [$injector:unpr] http://errors.angularjs.org/1.2.27/$injector/unpr?p0=advFilterNameFilterProvider%20%3C-%20advFilterNameFilter
at Error (native)
at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:6:450
at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:36:202
at Object.c [as get] (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:34:305)
at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:36:270
at Object.c [as get] (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:34:305)
at $get [as $filter] (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:125:335)
at gb.filter (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:172:465)
at gb.filterChain (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:172:391)
at gb.primary (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:169:270)
根据 Angular 文档的错误报告,我应该四处寻找缺少的提供者。但是,我似乎找不到缺少的东西。这是我的应用程序文件:
angular.module('programApp', [
'ngResource',
'ngRoute',
'programApp.controllers',
'programApp.directives',
'programApp.filters',
'uiSwitch'
]).config(['$locationProvider', '$routeProvider', function($locationProvider, $routeProvider) {
$locationProvider.hashPrefix('');
$locationProvider.html5Mode(true);
}]);;
这是我的控制器文件的顶部:
angular.module('programApp.controllers', [])
.controller('programController', ['$scope', '$http', '$filter', '$timeout', '$rootScope', '$location',
function($scope, $http, $filter, $timeout, $rootScope, $location){
我还有 2 个自定义过滤器:
angular.module('programApp.filters', []).filter('filterName', function(){
//my filter code here
}).filter('advFilterName', function(){
//my other filter code here
});
这是我的一个指令:
angular.module('programApp.directives', [])
.directive('ngEnter', function () {
//directive code here
});
根据错误代码和其他 SO 问题,我认为我应该调查我的过滤器的提供商问题...但我似乎找不到任何问题。
另外,我的 none 代码被缩小了,所以这不是问题。
导致此错误的原因是什么?
问题是您在每次 angular.module
调用时重新创建模块。
在声明您的指令、过滤器和控制器时,从您的 angular.module
调用中省略 []
。
对 angular.module
angular.module('programApp', [])
适合 声明 您的模块...但在随后的 angular.module
调用中包含第二个参数 ([]
) 实际上会重新创建您的模块.
换句话说,一旦你声明了你的 `prgoramApp' 模块,你的过滤器应该这样声明
angular.module('programApp').filter('filterName', function(){
//my filter code here
}).filter('advFilterName', function(){
//my other filter code here
});
(在 angular.module
的调用中没有 []
)
有关这方面的更多信息,请参阅 Creation vs Retrieval section of the Angular Module docs。