Angular,将控制器注入运行

时间:2015-05-19 02:47:19

标签: javascript angularjs

我想知道是否可以将控制器注入.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,但是运行而不是另一个控制器。希望这可以帮助!感谢。

0 个答案:

没有答案