3 回答
TA贡献1827条经验 获得超7个赞
无需更新路径,只需使用页码更新查询参数。
设置路由以忽略查询参数更改:
....
$routeProvider.when('/foo', {..., reloadOnSearch: false})
....
并在您的应用程序中更新$location:
...
$location.search('page', pageNumber);
...
TA贡献1946条经验 获得超4个赞
从这篇博客文章:
默认情况下,所有位置更改都会经过路由过程,该过程会更新角度视图。
但是,有一种简单的方法可以将其短路。Angular监视位置更改(是否通过输入位置栏,单击链接或通过来设置位置来完成 $location.path())。当感知到此更改时,它将广播事件$locationChangeSuccess,并开始路由过程。我们要做的是捕获事件并将路由重置为以前的状态。
function MyCtrl($route, $scope) {
var lastRoute = $route.current;
$scope.$on('$locationChangeSuccess', function(event) {
$route.current = lastRoute;
});
}
TA贡献2080条经验 获得超4个赞
我的解决方案是使用$ routeChangeStart,因为它为您提供了“下一条”和“最后一条”路线,您可以比较它们而无需像$ locationChangeSuccess那样的额外变量。
好处是能够访问“下一条”路径和“最后一条”路径上的“ params”属性,例如next.params.yourproperty当您使用“ / property / value” URL样式时,当然$location.url还是使用或$location.path更改URL,$location.search()这取决于“?property = value” URL样式。
在我的情况下,我不仅将它用于此目的,而且还防止控制器未更改而更改路由:
$scope.$on('$routeChangeStart',function(e,next,last){
if(next.$$route.controller === last.$$route.controller){
e.preventDefault();
$route.current = last.$$route;
//do whatever you want in here!
}
});
我个人觉得AngularJS应该提供一种控制它的方法,现在他们认为,每当您更改浏览器的位置时,您都希望更改路线。
- 3 回答
- 0 关注
- 976 浏览
添加回答
举报