当前位置: 首页 > 面试题库 >

无法从角度检索注射器

淳于煌
2023-03-14
问题内容

我有两个模块的应用程序:

angular.module('components', []).directive('foo', function () { return {};});
angular.module('gaad', ['components']);

有很多与此模块相关的指令,在此不包括在内。该应用程序运行正常。但是,当我尝试检索模块的注入器时gaad

var injector = angular.injector(['gaad', 'components']); //called after 'gaad' module initialization

引发错误:

Uncaught Error: Unknown provider: $compileProvider from components

该应用程序现在很大,我不知道应该在哪里寻找错误。所以我的问题是: 我可能遇到问题的原因什么?

编辑: 我能够复制我的问题:http :
//jsfiddle.net/selbh/ehmnt/11/


问题答案:

在回答问题之前,我们需要注意, 每个应用程序只有一个注入器实例,而每个模块只有一个
。从这个意义上说,不可能为每个模块取回注射器。当然,如果我们采用顶层模块,则它代表了整个应用程序。从这个意义上讲,应用程序和顶级模块似乎是等效的。看起来可能有细微的差别,但必须理解它才能完全正确地回答此问题。

接下来,从我能理解你想 获取
$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
  • 从AngularJS世界以外的国家/地区调用- angular.element([DOM element]).injector()其中[DOM元素]是ng-app定义了的圆顶元素(或该元素的任何子元素)。此处提供更多信息:http : //docs.angularjs.org/api/angular.element

这是jsFiddle,它显示了两种检索注射器的方法:http :
//jsfiddle.net/xaQzb/

还请注意,$injector在单元测试之外,直接使用并不是很常见的情况。从AngularJS世界之外检索AngularJS服务可能是有用的想法。



 类似资料:
  • 我想从AOP连接点检索一个注释。我能够通过反射获得注释,但无法通过ProcedingJoinPoint获得注释。 我的注释方法 我的绒球

  • 我正在学习ReactJS,并试图在https://raw.githubusercontent.com/kirupa/kirupa/master/reactjs/helloworld_batman.htm运行代码(这来自https://www.kirupa.com/react/building_your_first_react_app.htm的说明)。 使用Chrome时,不会显示“蝙蝠侠”,Chr

  • 所以我使用DynamoDB来存储我的火花作业的状态。我已经创建了主键名为计划时间(分区键)和appName(范围键)和我的火花作业写作业完成后的状态。在我的火花作业完成后,另一个Python脚本计划检索作业的状态,并在失败时重新启动应用程序。有时,即使记录存在,我也不会在DynamoDB表中为一组特定的主键获取任何项目,当我使用用户界面时,我可以看到相应的记录。我使用boto3库table.get

  • 这是我的第二个版本,我试图从Firebase检索代码,并用它做一些事情。这是我的第二种方式: 这将崩溃,并出现错误代码: 未能将类型“__NSCFString”(0x10A77F4A0)的值强制转换为“NSDictionary”(0x10A780288)。在“更新”行。这是我的第一次尝试: 打印更多数据: -路径通道引用:可选(https://x.com/channels/-kegkajavh6u

  • 我想从数据库中检索名称。但我总是收到错误: 数据库Java语言 它不断返回错误 android.database.CursorIndexOutOfBoundsException:请求索引-1,大小为1,字符串名称=helper.getProductNameT(cur); 有人知道我的编码哪里出错了吗?

  • 我试图通过json从在线数据库(MySql)获取数据,并希望将其显示为ListView。到目前为止我所做的: Downloader.java } 美娜ctivity.java 当我运行应用程序时,应用程序。。在Downloader.java类的第35行,我收到一条toast消息,上面写着“无法下载数据”。所以我猜我从数据库中得到的数据是空的…但为什么是空的。。。。 $con=mysqli_conn