我想知道是否可以将控制器注入.run
这是我正在尝试的
.run([
multistateModule.componentName,
function($controller, $scope, MultiState) {
$controller('builderProductCtrl.componentName', {
$scope: controllerTest
});
console.log(controllerTest);
}
]);
原谅requirejs格式,builderProductCtrl.componentName是控制器名称。 Angular似乎不喜欢这个,它告诉我controllerTest在js提示中是未定义的。我想知道这样的事情是否可行?我想注入它并在运行中使用控制器中的函数。谢谢!
编辑:据我所知,不能在运行中使用范围,所以我换到了罗纳斯 - 见这里:
.run([
'$controller',
'$rootScope',
multistateModule.componentName,
builderProductCtrl.componentName,
function($controller, $rootScope, MultiState, builderCtrl) {
var controllerTest = $rootScope.$new();
$controller('builderCtrl', {
$rootScope: controllerTest
});
console.log(controllerTest);
}
当我这样做时,我得到了一个未知的控制器提供者(builderProductCtrlProvider),也许可以使用$ controllerProvider - https://docs.angularjs.org/api/ng/provider/ $ controllerProvider,我只是不确定如何在文档中应用逻辑
我会尝试添加一点清晰度 -
我创建了一个自定义路由模块,用于以requirejs格式路由角度应用程序(其中每个项目都是自己的angular / requirejs格式)。它被设置为触发回调到.run中注册的模块。可能,实现此目的的最简单方法是在控制器中创建一个处理服务/工厂以及某种类型的监听器来轮询更改。
基本上它归结为根据路由状态改变的$ scope变量,所以我想了一下 - 如果我可以从控制器内部注入一个函数,它将跳过服务/工厂的步骤回调只会在控制器内调用该函数。看起来更像是一个广播/发射的提供商是更好的主意,但我总是想知道是否有可能注入控制器。像这样的How do I inject a controller into another controller in AngularJS,但是运行而不是另一个控制器。希望这可以帮助!感谢。