我在我的应用程序中使用的是1.4.5版的angularJs和0.2.18版的angular-ui-router。我注意到我的resolve函数针对某个状态执行了两次。
我也尝试使用更新的angular-ui-router版本,最高为0.4.3,但问题仍未解决。
我的状态定义之一如下:
$stateProvider
.state('app', {
url: '/',
views: {
'': {
resolve: {
usersList: function() {
return MainService.getUsers().UsersData.$promise.then(
function(response) {
return response;
}
);
}
},
templateUrl: 'app/views/main/main.html',
controller: "MainController"
}
}
})
解析函数不应执行两次。它应该只执行一次。
我还注意到,我们首先检查用户是否有权访问页面,然后将其重定向到该页面。我创建了一个示例plunkr,其中显示了已解析的函数被两次执行:official docs
答案 0 :(得分:0)
这里的问题(指的是your plnkr)是默认路由是route1,因此应用在加载时会直接使用该路由。同时,您在运行块中有一个异步API调用,以检查用户是否获得了route1的授权。解决了该API调用的承诺后,应用程序将第二次重定向到route1,为您带来双重解决。
将route1用作默认路由的方法没有意义,如果该路由需要可能缺少的授权。我建议: