我有以下html:
我正在尝试获得如下范围:
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());
});
如果您的代码中有此内容:
$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
我认为你实际上没有
scope
。假设您的意思是 $scope
,它是一个在控制器和 DOM 的一部分之间共享的环境,并且它通过 AngularJS 依赖注入机制注入到控制器内部。除此之外,我没有看到你的 '#angularHeaderDiv'
和任何范围之间有任何关联,因为这个 div 甚至不与任何控制器关联。
我对 AngularJS 也不是很有经验,但实际上我从未见过你在这里想要完成的任务。
编辑
看到你的编辑后,你试图访问
config
中的 DOM 元素,我想说这肯定是解决你的问题的非 AngularJS 方法。我建议您阅读有关该框架的更多信息。
如果您的应用程序有
debugInfoEnabled(false)
,您可以尝试使用调试信息重新加载应用程序:
angular.reloadWithDebugInfo()
请参阅此处:https://docs.angularjs.org/guide/development#disabling-debug-data