Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Url 如果angularjs路由解析失败,则不会中断功能_Url_Angularjs_Routes - Fatal编程技术网

Url 如果angularjs路由解析失败,则不会中断功能

Url 如果angularjs路由解析失败,则不会中断功能,url,angularjs,routes,Url,Angularjs,Routes,我正在寻找最好的方法,以避免在解决角度路由失败时破坏浏览器的背面功能。现在我正在做以下工作: $location.path(lastUrls[0]); $location.replace(); window.history.back(); 虽然这是可行的,但我想知道是否有更好的解决方案。如果我的url历史记录如下所示: www.example.com->www.example.com/items->www.example.com/items/123 如果项目123对该项目有解析,并返回404错

我正在寻找最好的方法,以避免在解决角度路由失败时破坏浏览器的背面功能。现在我正在做以下工作:

$location.path(lastUrls[0]);
$location.replace();
window.history.back();
虽然这是可行的,但我想知道是否有更好的解决方案。如果我的url历史记录如下所示:

www.example.com->www.example.com/items->www.example.com/items/123

如果项目123对该项目有解析,并返回404错误,则我的浏览器历史记录如下所示:

www.example.com->www.example.com/items->www.example.com/items

但是因为我有window.history.back;调用时,浏览器位于历史记录中倒数第二项,而不是最后一项。回叫在那里,所以如果用户点击了后退按钮,他们将被带到他们期望的页面,如果我没有回叫,它将把他们带回到他们当前所在的页面,因为现在历史记录中有两个


我这样做是最好的方法还是angular公司有更好的方法?

我了解您的做法,但我不确定依赖浏览器当前位置来处理路由故障是否是一个好主意。如果解析失败并有回调,那么在$routeChangeError上使用事件不是更好吗?!您甚至可以捕获错误类型,并对每种类型做出不同的反应。这样你就可以控制你的应用程序状态。只是一个想法/建议:-在这里,我按照这些思路做了一些事情,可能会帮助您发现$location代码在错误事件中。