2014-02-05 45 views
1

給定一個AngularJS ngController指令是這樣的:當使用「Controller As」語法時,有沒有辦法獲得Angular控制器的命名空間?

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

是有辦法進去SomeCtrl命名空間( 「herpderp」)?例如,當我想使用「herpderp」將我的應用程序的某個其他部分註冊爲特定的控制器實例時,或者在明確的名稱下跟蹤控制器,其中$scope.$id不會這樣做。

說明/更新:我知道在我的控制器代碼中,我可以訪問$scope.herpderp - 在這個特定的示例中。問題在於我正在編寫一個控制器,而不是在不同的部分以不同的「名稱」在頁面中實例化幾次,因此$scope屬性(上面示例中的herpderp)每次都會有所不同。所以,以我爲例,我想知道「B」在ng-controller="A as B"SomeCtrl as herpderp)中的信息。

+0

by namespace,你是指角度模塊嗎? – Dalorzo

+0

我的意思是我想獲得信息_「在$範圍內,這個控制器實例被稱爲'herpderp'」_。 –

+0

從html獲取範圍數據就像{{myVar})一樣簡單,如果您將其聲明爲$ scope.myVar – Dalorzo

回答

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); 
    } 
} 
+0

這就是訣竅。非常感激! –

1

當您使用控制器作爲語法時,您的控制器仍將附加到範圍。所以你可以說$scope.herpderp.foo訪問你的控制器上的東西。從您的控制器內部,您可以使用this.foo訪問相同的變量。而從HTML你會使用herpderp.foo

不知道這是否回答你問的問題。

+0

不幸的是,事實並非如此。我剛剛在我原來的問題中加了一個說明。 –

相關問題