角度:状态更改在第二次点击时丢失网址

时间:2015-04-27 20:33:21

标签: angularjs angular-ui-router state

我有4个状态,每个状态代表不同的可视化。第一个可视化是地图,第二个到第四个是饼图。

默认为地图可视化。我有三个图标,总是显示其他3个可能的可视化。

每个州实际上都是一个嵌套状态。第一个状态是" root.map",然后我们有" root.vis1"," root.vis2"和" root.vis3"

当我最初加载默认" root.map"可视化,一切都很好。然后我点击一个图标,一切正常,可视化变化。浏览器中的网址变为" 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;
  }

1 个答案:

答案 0 :(得分:1)

将其更改为:

var result = JsonConvert.DeserializeObject<RootObject>(jsonString);

或者

<a class="inline vis-icons" href="" ng-click="set_visualization('vis2');">

请参阅: {{3}}