AngularJS DI用于自定义函数
AngularJS DI for custom functions
我最近在AngularJS上做了很多工作,我真的很喜欢依赖注入的东西。我到处都在用它,但只是在Angular组件中,比如控制器之类的。
这总是调用有角度的对象:
angular.module('app').controller(/**/);
现在我有了这个功能:
var custom = function(MyService) {
// do stuff
};
我已经这样宣布服务:
angular.module('app').factory('MyService', function($rootScope) {
return {
show: function() {
// do stuff
};
},
hide: function() {
// do stuff
}
};
});
我现在想在我的自定义功能中使用此服务。有没有一种方法可以手动调用有角度的DI容器?(我在文档中找不到任何东西…)
我知道这适用于没有用angular.module()...
定义的控制器:
function Controller(MyService) {
MyService.hide(); // works
}
但是如何在AngularJS组件之外,在完全独立的函数中使用它呢?
还是我必须走一条完全不同的道路才能实现我的目标?
干杯和感谢提前,
Christian
angularjs非常巧妙,因为它向用户公开了自己的内部服务。您正在寻找的服务是$injector
您想用来调用自定义函数的是$injector.invoke(myCustomFunction,thisForCustomFunction,{named:locals});
如果您碰巧想在angular之外调用此函数,则必须获得应用程序注入器。
var injector = angular.element(elementWithNgApp).injector();
不过,调用时间可能会减少。因为注入器必须使用几个正则表达式进行注释(查找您需要的服务)。这在整个angular中不是一个问题的原因是因为它只做了一次。因为服务、工厂、提供者都是实例化的(新的)单体,它们提供了服务的闭包,以及在提供者中使用服务的任何东西
为了防止这一额外步骤,您可以在函数上提供$inject
属性。。类似这样的东西:
myfunction.$inject = ['ServiceA','ServiceB'];
function myfunction(a,b){
//a is ServiceA
//b is ServiceB
};
相关文章:
- 自定义函数中的光标位置
- Google Sheet自定义函数返回0
- 其中是自定义函数中的属性
- 创建自定义函数以在函数上运行完整的多选下拉列表
- Google Sheets自定义函数条件格式
- dalek回调或自定义函数
- UI网格:如何从自定义函数访问MODEL_COL_FIELD
- 评估作为参数传递给 Google 电子表格中自定义函数的条件
- 具有自定义函数调用的 HTML 表单
- 使用 jQuery 对动态创建的元素调用自定义函数
- 从自定义函数返回promise
- extjs-使用传递的参数创建自定义函数
- AngularJS DI用于自定义函数
- Javascript 自定义函数错误
- 如何使用Angular 1.5组件将属性求值为字符串,这是一个自定义函数
- 为谷歌工作表创建一个自定义函数
- Javascript自定义函数,用于将JSON格式的YQL查询响应导入谷歌电子表格
- AJAX路由不适用于我在Laravel中的自定义函数
- 在JQgrid的summaryType中编写一个自定义函数,用于组值的减法
- 自定义函数不适用于追加方法