gpt4 book ai didi

javascript - AngularJS $rootScope.$on 在迁移到 Angular2 的上下文中的替代方案

转载 作者:行者123 更新时间:2023-11-30 10:58:10 24 4
gpt4 key购买 nike

我们的 AngularJS 项目已经开始,它距离现代 Angular 还有很长的路要走。

ngMigration 实用程序建议我删除所有 $rootScope 依赖项,因为 Angular 不包含类似 $rootScope 的概念。在某些情况下这很简单,但我不知道如何使用事件订阅机制。

例如我有某种空闲看门狗:

angular
.module('myModule')
//...
.run(run)

//...
function run($rootScope, $transitions, Idle) {
$transitions.onSuccess({}, function(transition) {
//...
Idle.watch(); // starts watching for idleness
});

$rootScope.$on('IdleStart', function() {
//...
});

$rootScope.$on('IdleTimeout', function() {
logout();
});
}

如果我想摆脱 $rootScope,我必须在哪个对象而不是 $rootScope 上调用 $on 函数?

UPD

问题不是关于“如何在 Angular2 事件系统上迁移”。它是关于如何删除 $rootScope 依赖项但保留事件系统。好吧,这似乎是不可能的。

最佳答案

I don't know what to do with event subscription mechanisms.

Angular 2+ 框架用可观察对象替换了 $scope/$rootScope 事件总线。

来自文档:

Transmitting data between components

Angular provides an EventEmitter class that is used when publishing values from a component. EventEmitter extends RxJS Subject, adding an emit() method so it can send arbitrary values. When you call emit(), it passes the emitted value to the next() method of any subscribed observer.

A good example of usage can be found in the EventEmitter documentation.

有关详细信息,请参阅

关于javascript - AngularJS $rootScope.$on 在迁移到 Angular2 的上下文中的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59158552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com