给出像这样的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”的信息。
答案 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);
}
}