将服务动态注入控制器
Dynamically inject service to a controller
而不是指定控制器中的所有服务,例如:
mainApp.controller('MultiController', ['$scope', '$attrs', '$branchesService', '$repositoriesService', function ($scope, $attrs, $branchesService, $repositoriesService) {
console.log('multiController instantiated');
var vm = this;
// private idu funkcija definition bez scope
vm.init = function(mod) {
vm.mod = mod;
if (mod == "branch") {
console.log('MultiController branchesService');
vm.service = $branchesService;
} else {
console.log('MultiController repoService');
vm.service = $repositoriesService;
}
vm.items = [];
vm.selectedItem = null;
vm.error = 'no Error at the moment...';
loadRemoteData();
console.log('multiController.init()');
}
vm.init($attrs.mod);
可以使用$inject吗?我正在使用$attrs从html获取规范,我应该使用哪种服务。
您可以在控制器中$injector
依赖项,然后执行$injector.get
来获取服务对象。
$injector
用于检索提供程序定义的对象实例, 实例化类型、调用方法和加载模块。
基本上$injector.get
方法将搜索您在 angular context
中提供的任何服务名称,如果找到,则返回object
。
法典
vm.init = function(mod) {
vm.mod = mod;
if (mod == "branch") {
console.log('MultiController branchesService');
vm.service = $injector.get('branchesService'); //you will have service instance here
} else {
console.log('MultiController repoService');
vm.service = $injector.get('repositoriesService'); //you will have service instance here
}
vm.items = [];
vm.selectedItem = null;
vm.error = 'no Error at the moment...';
loadRemoteData();
console.log('multiController.init()');
}
是的,您可以注入$injector
,并像这样使用它:
var brancesService = $injector.get('brancesService');
相关文章:
- Ionic将firebase注入工厂,同时将控制器和服务保存在不同的文件中
- 将方法从控制器注入到未使用右变量调用的指令
- 无法在routeprovider中注入控制器
- 我可以将控制器注入到这个 Formly 选择框对象中吗?
- 如何在angularjs中为每个控制器注入一个独特的模块
- 在 angularJS 中向控制器注入服务失败
- AngularJS 控制器注入依赖关系 - 为什么构造函数有 []
- 将复杂的角度控制器注入茉莉花
- 向控制器注入服务会收到 unpr 错误
- 在 AngularJS 中将一个控制器注入另一个控制器时出错
- $scope不会使用点表示法从控制器注入/继承到指令
- 只有在需要时才向控制器注入Angular服务
- 在angular js中向控制器注入常量(模式弹出问题)
- 如何在angularjs中手动从控制器注入部分
- 为控制器注入解析参数
- 通过ng-init向控制器注入变量
- 直接向AngularJS指令控制器注入服务
- 在向控制器注入服务时重复声明
- 无法向控制器注入服务
- AngularJS从控制器注入部分视图