【发布时间】:2019-04-09 06:41:55
【问题描述】:
我在我的应用程序中使用 angularJs 版本 1.4.5 和 angular-ui-router 版本 0.2.18。我注意到我的解析函数会为一个状态执行两次。
我也尝试使用更新到 0.4.3 的 angular-ui-router 版本,但问题没有解决。
我的状态定义之一如下:
$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,其中显示已解析的函数正在执行两次:http://next.plnkr.co/edit/evuQuRxYwCNwhAPw?open=lib%2Fscript.js&preview
【问题讨论】:
-
听起来您的应用程序中可能存在错误,导致路由被调用两次。如果您同时在 HTML 和路由设置中声明控制器,则会发生这种情况。
-
我检查了控制器仅在状态定义中声明。我在 ui router github 存储库中遇到了这个问题:github.com/angular-ui/ui-router/issues/37。但我仍然找不到任何解决方案。
-
您是否在该州的 URL 中看到与斜线字符编码相关的链接问题?我不确定它是否与您的情况有关。
-
对于一种状态,我尝试删除斜杠并在 url 中仅使用一个单词。然后 resolve 只执行一次。但我需要在我的网址中使用斜杠。而且我也用了0.4.3版,问题还是没有解决。
-
我看到一些建议,如果升级不会造成太多麻烦,它可能会修复 Angular 1.6.8。我在看github.com/angular-ui/ui-router/issues/1645
标签: angularjs