为什么我的范围未定义?

问题描述 投票:0回答:3

我有以下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());
});
jquery html angularjs
3个回答
20
投票

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

$compileProvider.debugInfoEnabled(false);

...然后

scope()
isolateScope()
将返回
undefined
。如果将其设置为
false
,您会注意到
ng-scope
ng-isolate-scope
等其他内容从元素上的
class=
属性中消失。

参见:https://code.angularjs.org/1.3.16/docs/guide/development#disabling-debug-data


0
投票

我认为你实际上没有

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

我对 AngularJS 也不是很有经验,但实际上我从未见过你在这里想要完成的任务。

编辑

看到你的编辑后,你试图访问

config
中的 DOM 元素,我想说这肯定是解决你的问题的非 AngularJS 方法。我建议您阅读有关该框架的更多信息。


0
投票

如果您的应用程序有

debugInfoEnabled(false)
,您可以尝试使用调试信息重新加载应用程序:

angular.reloadWithDebugInfo()

请参阅此处:https://docs.angularjs.org/guide/development#disabling-debug-data

© www.soinside.com 2019 - 2024. All rights reserved.