2014-10-27 154 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