我主要对这一行在他们的文档中的影响感兴趣:
与 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 之间的同步问题)?
如有必要,我可以尝试制作一个最小的示例。
编辑: 这不完全是我正在使用的环境(就角度版本而言),但这是我正在谈论的角度区域行为的一个示例。