Angularjs 重定向:解析vs onEnter

Angularjs 重定向:解析vs onEnter,angularjs,angular-ui-router,Angularjs,Angular Ui Router,如果某些条件不正确,我想重定向用户。(通常在他没有联系的情况下) 我有两个解决方案来重定向stackoverflow或ui router wiki上的用户。但是我不明白他们什么时候行动,什么是对我的用例最好的 { name: 'example', url: "/example/:idExample", templateUrl: '[...]', controller: '[...]', controllerAs: '[...]', onEnter:

如果某些条件不正确,我想重定向用户。(通常在他没有联系的情况下)

我有两个解决方案来重定向stackoverflow或ui router wiki上的用户。但是我不明白他们什么时候行动,什么是对我的用例最好的

{
    name: 'example',
    url: "/example/:idExample",
    templateUrl: '[...]',
    controller: '[...]',
    controllerAs: '[...]',
    onEnter: ['connectedUser', function (connectedUser) {
        console.log("On Enter");
        if (condition) {
            //redirect;
        }
    }],
    resolve: {
        canAccess: function canAccess(connectedUser) {
            console.log("CanAccess");
            if (condition) {
                $timeout(function () {
                    //redirect
                }, 0);
                return $q.reject()
            }
        }
    }
}
这两种方法都很有效,但是$timeout在我看来并不漂亮。然而,似乎在OneNet之前就调用了resolve,可能更好地防止一些无用的负载?

当使用其中一个或另一个时,我无法正确理解。

Resolve可用于首先执行一些操作,以查看用户是否可以进入该状态。当用户已经处于状态,然后执行一些操作时,通常使用oneter。因此,对于您的用例,我将使用
resolve
它取决于重定向是什么。真的有必要吗?通常,您可能只想在解析器中解析/拒绝承诺。并在状态错误处理程序中对拒绝的承诺执行重定向。可以使用Resolve首先执行一些操作,以查看用户是否可以进入状态。当用户已经处于状态,然后执行一些操作时,通常使用oneter。因此,对于您的用例,我将使用
resolve
它取决于重定向是什么。真的有必要吗?通常,您可能只想在解析器中解析/拒绝承诺。并在状态错误处理程序中对拒绝的承诺执行重定向。