0
我有4個狀態,每個狀態代表不同的可視化。第一個可視化是一張地圖,第二個到第四個是餅圖。角度:狀態變化在第二次點擊時丟失了URL
默認值是地圖可視化。我有三個圖標總是顯示其他3種可能的可視化。
每個狀態實際上是一個嵌套狀態。第一個狀態是「root.map
」,那麼我們有「root.vis1
」,「root.vis2
」和「root.vis3
」。
當我最初加載默認的「root.map
」可視化時,一切都很好。然後我點擊一個圖標,一切正常,可視化改變。例如,瀏覽器中的URL變爲「localhost:3000/#/root/vis2
」。但是當我再次點擊時,儘管可視化正確地更改爲所選內容,但我在瀏覽器中放鬆了路徑,並且它變爲「localhost:3000/#
」。
這可能是什麼原因造成的?我希望瀏覽器中的網址始終反映當前的網址(因此它可以被設爲書籤或共享)。
國家提供的配置:
$stateProvider
.state('home', {
url: "/home",
templateUrl: "views/home.html",
})
.state('root', {
abstract: true,
url: "/root",
cache: false,
templateUrl: "views/root.html"
})
.state('root.map', {
url: "/map",
cache: false,
templateUrl: "views/map.html",
resolve: {
//some resolve code
}
})
.state('root.vis1', {
url: "/vis1",
cache: false,
templateUrl: "views/vis.html"
})
.state('root.vis2', {
url: "/vis2",
cache: false,
templateUrl: "views/vis.html"
})
.state('root.vis3', {
url: "/vis3",
cache: false,
templateUrl: "views/vis.html"
});
}
的圖標:
<a class="inline vis-icons" href="#" ng-click="set_visualization('vis2');"><i class="fa fa-map-marker"></i></a>
的set_visualization
功能控制器:
$scope.set_visualization = function(visualization) {
$scope.current_vis = visualization;
$state.transitionTo('root.' + visualization);
return false;
}
做其他環節(如,到'vis1',等...)有'HREF = 「#」'在其中?如果你先去'vis2'然後回到'vis1',你會得到同樣的行爲嗎? – Tom
爲什麼你使用'$ state.TransitionTo'而不是'$ state.go'? – Claies
不使用'href =「#」'沒有'event.preventDefault()' – charlietfl