在优化中定义范围

Defining scope in optimizely

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

这是他们文档中的函数

 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([=11=]).scope()

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

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

对于启用 debugging data 的情况,防故障方法是

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

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