从 ngRoute 迁移到 ui.router $rootScope.$on '$stateChangeStart' 不触发

migrate from ngRoute to ui.router $rootScope.$on '$stateChangeStart' not triggering

我正在尝试创建一个身份验证系统。我偶然发现了 this (plunk) 教程,它很棒但是使用了 ngRoute,我希望切换到 ui.router.

在尝试自己完成一些困难之后,我决定进行更多搜索以找到 this ui.router auth demo (plunk)

我替换了一些东西,现在我的代码看起来像 this (plunk)

我已经成功地用 ui.router 替换了 ngRoute 但我有一个小问题:

module.run 方法命中,但在其中我有下面的代码永远不会被触发(我只希望弹出警报,以便可以继续编写重定向逻辑)。

$rootScope.$on('$stateChangeStart', function (e, toState, toParams, fromState, fromParams) {
        alert("enter");

        // redirect to login page if not logged in and trying to access a restricted page
        // var restrictedPage = $.inArray($state.path(), ['/login', '/register']) === -1;
        // var restrictedPage = !($state.includes("login") || $state.includes("register"));

        var loggedIn = $rootScope.globals.currentUser;
        if (!loggedIn) {
            $state.go('login');
        }
    });

我还没有弄清楚我做错了什么。 谢谢你们的宝贵时间!

尝试 this 版本。

基本上,使用 $transitions 而不是 $rootScope.$on('$stateChangeStart',因为它已被弃用。