3

我主要对这一行在他们的文档中的影响感兴趣:

与 UpgradeModule 不同,downgradeModule()它不会在 Angular 区域内引导主 AngularJS 模块。

这是否意味着只有应用程序的初始引导程序将在 Angular 区域之外运行?或者,实例化的服务、工厂等是否也会在 Angular 区域之外运行?

如果它只是最初的引导程序,那么如何在 Angular 区域之外运行 AngularJS 端的特定部分(主要是出于性能原因)?

一个解释我为什么感到困惑的简单示例是一个 AngularJS 服务,它执行以下操作:

element.on('click', handlerFn);
function handlerFn () {
    scope.$apply(function () {
        // update some scope binding
    });
}

在此示例中,单击处理程序发生在 AngularJS 中的更改检测之外,这就是scope.$apply需要的原因。

然而,Angular 变化检测是另一回事:

首先,有一些事件被修补以在角度区域内自动工作。

其次,我注意到如果服务是从 a 内调用的UpgradeComponent,它在 Angular 区域内,但看起来如果它是从应用程序的另一部分调用的,而不是源自 an UpgradeComponent,那么它不在区。

这仅仅是因为它被升级的组件调用了吗?如果是这样,是否有一些标准的解决方法可以让这段代码在 Angular 区域之外运行,比如在引导期间或在UpgradeComponent? 或者甚至尝试这样做是不好的做法(比如它会导致 Angular 和 AngularJS 之间的同步问题)?

如有必要,我可以尝试制作一个最小的示例。

编辑: 这不完全是我正在使用的环境(就角度版本而言),但这是我正在谈论的角度区域行为的一个示例。

4

0 回答 0