我有一個其中有兩條路線非常簡單AngularJS應用:AngularJS路徑控制器不重裝
#/search
#/results
當我從一個路線導航爲我預料其他一切正常。獲取所需的任何資源並完美顯示內容。
問題是,當我從一條路線導航到相同的路線(即,#/結果到#/結果)時,絕對沒有任何反應。我從瀏覽器的角度理解沒有發生任何事情,但我真的很喜歡AngularJS重新加載內容。
這一定很容易,但我在這件事上留下空白。有人可以幫我解釋一下嗎?
感謝,
喬恩
我有一個其中有兩條路線非常簡單AngularJS應用:AngularJS路徑控制器不重裝
#/search
#/results
當我從一個路線導航爲我預料其他一切正常。獲取所需的任何資源並完美顯示內容。
問題是,當我從一條路線導航到相同的路線(即,#/結果到#/結果)時,絕對沒有任何反應。我從瀏覽器的角度理解沒有發生任何事情,但我真的很喜歡AngularJS重新加載內容。
這一定很容易,但我在這件事上留下空白。有人可以幫我解釋一下嗎?
感謝,
喬恩
當您導航到同一個頁面,瀏覽器忽略它。
Angular.js與<a href="">
的默認行爲無關。
你可以做什麼,是創建一個自定義的指令其中:
$route.reload()
重新加載當前視圖(路線)。$location.path(newPath)
導航到其他視圖。我做了example:
app.directive('xref',function($route, $location){
return {
link: function(scope, elm,attr){
elm.on('click',function(){
if ($location.path() === attr.xref) {
$route.reload();
} else {
scope.$apply(function(){
$location.path(attr.xref);
});
}
});
}
};
});
在你看來只是創建:
<a xref="/">Home</a>
<a xref="/links">Links</a>
我最終使用這個簡單的指令來代替。好棒。謝謝 – Jonno
你可以檢查當前的路線是一樣的 「目的地」 的路線,並呼籲$route
的reload()
方法:
重裝( )
導致$ route service重新加載當前路由,即使$ location沒有改變。
因此,ngView創建新的範圍,重新實例化控制器。
例如爲:
在HTML:
<a href="" ng-click="toResults()">Results</a>
在控制器:
// ...first have `$location` and `$route` injected...
$scope.toResults = function() {
var dstPath = '/results';
if ($location.path() === dstPath) {
$route.reload() ;
} else {
$location.path(dstPath);
}
}
我用routeparams財產以及比較URL參數和它的工作就像一個魅力。如果任何人再次面臨這個問題,這裏是我如何解決它:
if ($location.path() === '/destination' && $routeParams.Name == Name) {
$route.reload();
}
else {
$location.path('/destination').search({ Name: Name });
}
你知道,如果你重新加載你的頁面,你的角應用程序將重新啓動? –
控制器應該再次運行,您如何獲取數據? –
等待,你的意思就像你剛剛進入地址欄並點擊進入?或者你真的清爽?或者實際上改變了路徑? –