如何禁用自动注射器(喷射器类型的魔术发现)?

前端之家收集整理的这篇文章主要介绍了如何禁用自动注射器(喷射器类型的魔术发现)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Angularjs具有基于函数参数自动发现提供程序的这个很好的功能.
例如,如果我想在某些功能中使用$http,我可以这样称呼:
$inject.invoke(function ($http) {

});

Angularjs会“知道”我的依赖是什么它将通过阅读我的功能的身体并根据它将知道的参数名称来找出它.

但是,当您希望缩小代码时出现问题. Minifier将更改参数名称.这就是为什么我们应该使用这个符号:

$inject.invoke(['$http',function ($http) {}]);

或这个符号:

function Foo ($http) {}
Foo.$inject = ['$http'];

$inject.invoke(Foo);

我们应该总是最终将我们的代码缩小.所以我们应该避免使用这个魔法(第一个例子)的符号.

现在我的问题:

我正在努力缩小我的js代码,并且angularjs无法解析提供程序的名称.
我找不到我没有指定的地方.$inject = […]现在它只是说:“未知提供者”,我不知道它是指什么功能.

是否可以关闭供应商的角色自动发现(自动进样器)?我将在缩小之前测试和修复我的代码.

所以,我想知道如何禁用这个“魔术”角度的扣除.
由于我总是缩小我的代码,所以当我不小心使用这个超级英雄的邪恶时,我想要角色对我大喊大叫.

怎么把它关掉?

从1.3.0-beta.6起,angularjs支持ng-strict-di选项,可以与ng-app指令一起使用以禁用自动注入.

Documentation

if this attribute is present on the app element,the injector will be created in “strict-di” mode. This means that the application will fail to invoke functions which do not use explicit function annotation (and are thus unsuitable for minification),as described in the Dependency Injection guide,and useful debugging info will assist in tracking down the root of these bugs

原文链接:https://www.f2er.com/angularjs/143210.html

猜你在找的Angularjs相关文章