假设用户需要通过单击指向人员详细信息页面的超链接从列表页面/人员导航到详细信息页面/ person_detail?Id = 12。同时另一个用户删除了id = 12的person对象。
这将导致无法解决人员信息,并解决:"子句或$ routeProvider。因此,URL将更改为/ person_detail?Id = 12,但浏览器仍将显示列表页面。
我敢打赌这是AngularJS的一个典型问题。 URL需要更改才能调用&#34;解决:&#34;,但是当&#34;解决&#34;失败后,浏览器会以错误的URL结束。是否有一个很好的通用方法来处理它?</ p>
以下是说明问题的代码
$routeProvider.when('/people', { //called for list page
controller: ListController,
templateUrl: "/List.html",
}).when('/person_detail', { //called for detail page
controller: DetailController,
templateUrl: "/Detail.html",
resolve: {
return CallAjax($route.current.params.Id); //suppose this function failed???
}
})
答案 0 :(得分:2)
对于resolve属性,您可以设置包含promise的对象映射。您可以使用promise中的catch子句来处理任何致命错误。
或者你可以听$ routeChangeError事件。如果任何解决承诺被拒绝,则广播。
以下链接很好地解释了如何解决问题。
http://blog.brunoscopelliti.com/show-route-only-after-all-promises-are-resolved