Angularjs 依赖注入顺序
Angularjs 依赖注入顺序
我在一个文件中添加了一个过滤器,现在我得到了我们所热爱的注入器错误。我正在尝试解决它,我认为这可能与注入顺序有关。如何声明提供者/服务等的编译顺序,以在注入它们之前编译它们...
HTML:
app.js:
angular.module('jsekoApp', [ 'ui', 'ngRoute', 'ngSlider']) .config( ... );
mainController.js:
angular.module('jsekoApp') .controller('MainController', [ '$scope', 'JokeFilter', 'JokeService', function MainController($scope, JokeFilter, JokeService) { ... }]);
JokeService运行正常。
jokeFilter是导致错误的东西 - jokeFilter.js:
angular.module('jsekoApp') .filter('JokeFilter', [ '$scope', function JokeFilter($scope) { ... }]);
在主控制器中,我先声明过滤器,因为服务需要过滤器。我认为这是正确的。我也在HTML中在angular和其他类似依赖项之后,在服务之前声明了过滤器。
完整的错误信息:
Error: [$injector:unpr] Unknown provider: JokeFilterProvider <- JokeFilter http://errors.angularjs.org/1.2.17/$injector/unpr?p0=JokeFilterProvider%20%3C-%20JokeFilter at http://127.0.0.1:9000/bower_components/angular/angular.js:78:12 at http://127.0.0.1:9000/bower_components/angular/angular.js:3735:19 at Object.getService [as get] (http://127.0.0.1:9000/bower_components/angular/angular.js:3862:39) at http://127.0.0.1:9000/bower_components/angular/angular.js:3740:45 at getService (http://127.0.0.1:9000/bower_components/angular/angular.js:3862:39) at invoke (http://127.0.0.1:9000/bower_components/angular/angular.js:3889:13) at Object.instantiate (http://127.0.0.1:9000/bower_components/angular/angular.js:3910:23) at http://127.0.0.1:9000/bower_components/angular/angular.js:7164:28 at link (http://127.0.0.1:9000/bower_components/angular-route/angular-route.js:913:26) at nodeLinkFn (http://127.0.0.1:9000/bower_components/angular/angular.js:6607:13) angular.js:9899 (anonymous function) angular.js:9899 (anonymous function) angular.js:7246 nodeLinkFn angular.js:6610 compositeLinkFn angular.js:6011 publicLinkFn angular.js:5916 boundTranscludeFn angular.js:6030 controllersBoundTransclude angular.js:6628 update angular-route.js:871 Scope.$broadcast angular.js:12797 (anonymous function) angular-route.js:552 wrappedCallback angular.js:11408 wrappedCallback angular.js:11408 (anonymous function) angular.js:11494 Scope.$eval angular.js:12518 Scope.$digest angular.js:12330 Scope.$apply angular.js:12622 done angular.js:8234 completeRequest angular.js:8439 xhr.onreadystatechange
admin 更改状态以发布 2023年5月21日
你的问题在于你试图直接注入一个过滤器。在这里可以找到解决方案:如何在控制器中使用过滤器?
基本上,你不能直接注入过滤器本身,需要使用$filter
。
你可以在这里找到更多信息:https://docs.angularjs.org/api/ng/service/$filter