2014-10-27 152 views
3

我有以下的html:爲什麼我的範圍未定義?

enter image description here

我試圖得到這樣的範圍:

console.log("app element scope: " + $('#angularHeaderDiv').scope()); 

,但我收到:undefined

我是angularJS初學者,我只是不明白爲什麼這不起作用。

UPDATE:這不工作,要麼:

var appElement = document.getElementById('angularHeaderDiv'); 
console.log("app element scope: " + angular.element(appElement).scope()); 

更新2:所有在那裏我嘗試在控制檯打印出範圍代碼:

angular.module('cmApp', [ 'pascalprecht.translate' ]) 
.config(function($translateProvider) { 

    $translateProvider.useStaticFilesLoader({ 
     prefix : '/resources/angular/scripts/languages/locale-', 
     suffix : '.json' 
    }); 

    // add translation table 
    $translateProvider.preferredLanguage('en'); 

    var appElement = document.getElementById('angularHeaderDiv'); 
    console.log("app element: " + angular.element(appElement).scope()); 
}); 
+0

您的意思是'$ scope'? – 2014-10-27 15:58:39

+0

很難說沒有看到JavaScript。 – 2014-10-27 15:59:06

+3

你想做什麼?我不明白爲什麼一個jQuery集合會有'.scope'方法,因爲你包括Angular – 2014-10-27 15:59:53

回答

0

我不沒想到你實際上有一個scope。假設你的意思是$scope,它是一個在控制器和DOM的一部分之間共享的環境,它通過AngularJS依賴注入機制注入到控制器內部。除此之外,我沒有看到你的'#angularHeaderDiv'和任何範圍之間的任何關聯,因爲這個div甚至沒有與任何控制器關聯。

我對AngularJS也不是很有經驗,但實際上我從來沒有見過你要在這裏完成的任務。

編輯

在看到你的編輯,你在哪裏試圖訪問一個config內的DOM元素,我會說,這是肯定的,以解決您的問題非AngularJS的方式。我建議你閱讀更多關於框架。

+0

我想要的是獲得rootScope,並且我認爲在ng-app中應該可用。 .. – 2014-10-27 16:04:06

+0

正如我所說的,$ scope是控制器和DOM的相關部分之間共享的環境。你可以,是的,嵌套的範圍,嵌套在你的DOM內的控制器。 – 2014-10-27 16:05:12

+0

好的,但這應該工作:'var appElement = document.getElementById('main'); console.log(「app element:」+ angular.element(appElement).scope());'因爲main已經綁定了HeaderCtrl,但是這也不起作用。 – 2014-10-27 16:07:13

13

如果你有這樣的代碼:

$compileProvider.debugInfoEnabled(false); 

...然後scope()isolateScope()將返回undefined。如果設置爲false,則會注意到ng-scopeng-isolate-scope之類的其他內容會從元素上的class=屬性中消失。

請參閱:https://code.angularjs.org/1.3.16/docs/guide/production#disabling-debug-data

+0

非常感謝!現在我需要找到另一種方法來從我的焦點管理器指令中的元素中提取範圍 – Frode 2015-08-11 08:15:14

+0

當debugInfoEnabled設置爲false時,如何獲取範圍?是否有其他方法來獲取元素的範圍? – 2017-02-27 23:21:18