使用ui-sref链接到父级时隐藏以前打开的子视图

时间:2016-05-18 15:44:49

标签: angularjs google-maps angular-ui-router angular-ui

我有一张带有标记的地图。单击标记时,将打开包含标记详细信息的子视图。

.state('map', {
    url: '/map',
    ...
})
.state('map.detail', {
    url: '/:markerId',
    ...
})

如果您打开标记的详细信息,请离开地图,然后使用ui-sref="map"返回地图,在子视图打开的情况下,网址将更改为/map/<markerId>

点击/map时,我想直接转到ui-sref="map",但不想重新加载'map' 只是隐藏任何子视图。

有一种简单的方法吗?我已经在这两个州尝试了cache: false的组合,但这并不是我想要的。

1 个答案:

答案 0 :(得分:1)

我不完全确定,你的问题是什么。因为这个

  

...点击ui-sref =“map”时我想直接进入/ map,但是不想重新加载地图只是隐藏任何子视图......

是UI-Router的默认行为。 a working plunker

这些链接不会触发父控制器的重新初始化'map'状态)

<a ui-sref="map">
<a ui-sref="map.detail({markerId:1})">
<a ui-sref="map.detail({markerId:22})">

这样的州:

  .state('map', {
      url: "/map",
      templateUrl: 'tpl.html',
      controller: 'ParentCtrl',
  })
  .state('map.detail', { 
      url: "/:markerId",
      templateUrl: 'child.html',
      controller: 'ChildCtrl',
  })

两位控制员:

.controller('ParentCtrl', ['$scope', function ($scope) { 
  $scope.timestamp = new Date().getTime();
}])
.controller('ChildCtrl', ['$scope', function ($scope) { 
  $scope.timestamp = new Date().getTime();
}])

我们可以看到,'map'状态仍未改变

检查here