我将服务名称从一个控制器传递给另一个控制器作为angularjs中的参数。当我在第二个控制器中收到该变量并将其用作服务名称时,我收到一个错误,即serviceNameVariable.get不是函数。所以我的问题是,如何在控制器中使用变量作为服务名称?
答案 0 :(得分:3)
以他的名义获得服务并不困难。
依赖注入也可以在运行时以角度进行:
angular.module("someApp").controller("childController", [
"$injector",
function($injector){
var serviceName = "someServiceName";
var service = $injector.get(serviceName);
service.executeAction(someParams);
}
]);
答案 1 :(得分:0)
查看Angular的$injector service,它允许您在任何地方动态检索自己的或原生的角度模块:
$injector
用于检索由provider,实例化类型,调用方法和加载模块定义的对象实例。
我们像其他任何服务一样注入$injector
服务:
app.controller('ctrl', function ($injector) {
var serviceNameVariable = '$http'; // or some input
var service = $injector.get(serviceNameVariable);
// Use the 'injected' service, in this case the $http#get method:
service.get('http://endpoint');
});