0

我正在阅读一些文档以进行优化,并看到它们为范围增加了一个有趣的价值。我不确定我是否完全理解它。

这是他们文档中的功能

 function(activate, options) {
   var scope = window.angular.element('body').scope();
   scope.$on('$locationChangeSuccess', function(event, next, current) {
     if (next.indexOf('/productPage') != -1) {
       if (!options.isActive) {
         activate();
       }
     }
   });
 }

我不完全遵循var scope这类似于* $rootscope *吗?

我知道您可以通过执行此操作来获取关联范围的值

angular.element($0).scope()

我看到窗口并想假设这超出了本地范围。

4

1 回答 1

1

$rootScope只要它是用元素引导的,它就等于当前应用程序的body,并且没有任何指令body具有自己的范围。只要应用程序是用bodyor引导的html,它就会适用于当前的代码,因为它会$locationChangeSuccess广播到所有范围。

对于启用调试数据的情况,防故障方法是

var root = angular.element(document.querySelector('.ng-scope')).scope().$root;

var root = angular.element(document.querySelector('.ng-scope')).injector().get('$rootScope');
于 2016-01-29T01:17:55.637 回答