3 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
無(wú)需更新路徑,只需使用頁(yè)碼更新查詢參數(shù)。
設(shè)置路由以忽略查詢參數(shù)更改:
....
$routeProvider.when('/foo', {..., reloadOnSearch: false})
....
并在您的應(yīng)用程序中更新$location:
...
$location.search('page', pageNumber);
...

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
從這篇博客文章:
默認(rèn)情況下,所有位置更改都會(huì)經(jīng)過(guò)路由過(guò)程,該過(guò)程會(huì)更新角度視圖。
但是,有一種簡(jiǎn)單的方法可以將其短路。Angular監(jiān)視位置更改(是否通過(guò)輸入位置欄,單擊鏈接或通過(guò)來(lái)設(shè)置位置來(lái)完成 $location.path())。當(dāng)感知到此更改時(shí),它將廣播事件$locationChangeSuccess,并開(kāi)始路由過(guò)程。我們要做的是捕獲事件并將路由重置為以前的狀態(tài)。
function MyCtrl($route, $scope) {
var lastRoute = $route.current;
$scope.$on('$locationChangeSuccess', function(event) {
$route.current = lastRoute;
});
}

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
我的解決方案是使用$ routeChangeStart,因?yàn)樗鼮槟峁┝恕跋乱粭l”和“最后一條”路線,您可以比較它們而無(wú)需像$ locationChangeSuccess那樣的額外變量。
好處是能夠訪問(wèn)“下一條”路徑和“最后一條”路徑上的“ params”屬性,例如next.params.yourproperty當(dāng)您使用“ / property / value” URL樣式時(shí),當(dāng)然$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!
}
});
我個(gè)人覺(jué)得AngularJS應(yīng)該提供一種控制它的方法,現(xiàn)在他們認(rèn)為,每當(dāng)您更改瀏覽器的位置時(shí),您都希望更改路線。
- 3 回答
- 0 關(guān)注
- 1044 瀏覽
添加回答
舉報(bào)