我试图重定向内部的ui路由器解决方案,想知道是否有一种方法在路由器解析器重新路由。目前这不工作,因为一个人会想。
resolver(auth,$state){ if(!auth.isLoggedIn()){ $state.go('noLoggedInPath'); } }
如何在解析器中正确重定向?
我的temp hack是这个,但我不舒服。
resolver(auth,$state,$timeout){ if(!auth.isLoggedIn()){ $timeout(function () { $state.go('noLoggedInPath'); },0); } }
您可以从解析器函数返回一个promise,它将指示是否继续导航到状态。如果你决定在别的地方导航 – 拒绝承诺并指定适当的状态:
原文链接:https://www.f2er.com/angularjs/145504.htmlresolver($q,$timeout,auth) { var deferred = $q.defer(); // $timeout is an example; it also can be an xhr request or any other async function $timeout(function() { if (!auth.isLoggedIn()) { // user is not logged,do not proceed // instead,go to a different page $state.go('noLoggedInPath'); deferred.reject(); } else { // everything is fine,proceed deferred.resolve(); } }); return deferred.promise; }
Plunkr here。