有没有办法在使用“Controller As”语法时获取Angular控制器的命名空间?

时间:2014-02-05 14:29:00

标签: javascript angularjs

给出像这样的AngularJS ngController指令:

<div ng-controller="SomeCtrl as herpderp">…</div>

有没有办法从里面的 SomeCtrl获取命名空间(“herpderp”)?例如,当我想使用“herpderp”将该特定控制器实例注册到我的应用程序的其他部分时,或者以$scope.$id不会执行的明确名称跟踪控制器。

澄清/更新:我知道在我的控制器代码中,我可以访问$scope.herpderp - 在此特定示例中。问题是我正在编写一个控制器,而不是在页面中,在不同的部分,在不同的“名称”下实例化几次,因此$scope属性(上例中的herpderp)将会每次都不一样。所以,以我的例子为例,我想获得ng-controller="A as B"SomeCtrl as herpderp)中“B”的信息。

2 个答案:

答案 0 :(得分:1)

当您使用控制器作为语法时,您的控制器仍将附加到示波器。因此,您可以说$scope.herpderp.foo访问控制器上的内容。从控制器内部,您只需使用this.foo即可访问同一个变量。从html你可以使用herpderp.foo

不确定这是否能解答您的要求。

答案 1 :(得分:1)

所以从你的控制器你想知道你是如何创建它的?例如MyCtrl as A vs MyCtrl as B。如果是这样,我认为你可以这样做。

for (key in $scope) {
    if ($scope[key] === this) {
        //if you created the controller with "MyCtrl as X" then this will log "X"
        console.log(key);
    }
}