angularjs – 无法从角度检索进样器
我有这个应用程序有两个模块:
angular.module('components',[]).directive('foo',function () { return {};}); angular.module('gaad',['components']); 有一堆与这个模块相关的指令,我不在这里。 var injector = angular.injector(['gaad','components']); //called after 'gaad' module initialization 则抛出错误: Uncaught Error: Unknown provider: $compileProvider from components 应用程序是相当大,现在,我不知道应该在哪里寻找错误。 编辑:
在回答这个问题之前,我们需要注意每个应用程序只有一个注入器实例,而不是每个模块。在这个意义上,不可能每个模块检索一个喷油器。当然,如果我们采取顶层模块,它代表整个应用程序。在这个意义上,应用程序和顶级模块看起来是等效的。它可能看起来像一个微妙的差别,但重要的是要理解,以完全和正确地回答这个问题。
接下来,从我可以理解,你想检索$ injector,而不是创建一个新的实例。事情是,angular.injector将为指定为参数的模块(应用程序)创建一个新的$ injector实例。这里主要的AngularJS模块(ng)必须明确指定。所以,在这段代码示例中: var injector = angular.injector(['gaad','components']); 你试图从’gaad’和’components’模块中定义的组件创建一个新的注入器,显然$ compileProvider没有在你的自定义模块中定义。将ng模块添加到列表将通过创建一个新的注射器“解决”问题,这可能是你不想发生的。 要实际检索与正在运行的应用程序相关联的注入器实例,我们可以使用2种方法: >从AngularJS JavaScript最简单的解决方案只是注入$ injector实例:http://docs.angularjs.org/api/angular.injector 这里是jsFiddle显示注射器检索的2种方法:http://jsfiddle.net/xaQzb/ 还请注意,直接使用$ injector不是非常常见的单元测试之外的情况。从AngularJS世界之外检索AngularJS服务可能是有用的。更多信息:Call Angular JS from legacy code。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |