为什么我的范围未定义?

时间:2014-10-27 15:55:17

标签: jquery html angularjs

我有以下html:

enter image description here

我试图让范围像:

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

但我收到了:undefined

我是angularJS初学者,我根本不知道为什么这不起作用。

更新:这也不起作用:

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());
});

2 个答案:

答案 0 :(得分:15)

如果您的代码中有此内容:

$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

答案 1 :(得分:0)

我认为你实际上没有scope。假设您的意思是$scope,它是一个在控制器和DOM的一部分之间共享的环境,它通过AngularJS依赖注入机制注入到控制器内部。除此之外,我没有看到你的'#angularHeaderDiv'和任何范围之间存在任何关联,因为这个div甚至与任何控制器都没有关联。

我对AngularJS也不是很有经验,但实际上我从来没有见过你想要在这里完成什么。

修改

看过你的编辑,你试图访问config中的DOM元素,我会说这肯定是非AngularJS方法来解决你的问题。我建议你阅读更多有关框架的内容。