0

我有类似的东西:

<uib-tabset active="vm.activeTab">
    <uib-tab index="0" heading="First"> </uib-tab>
    <uib-tab index="1" heading="Second"> </uib-tab>
...
<uib-tabset>

我的控制器识别...#page&tab=second到此处导航(通过查找选项卡名称并获取为活动选项卡设置的索引)。如何公开每个选项卡的 URL,以便用户可以将其添加书签或通过电子邮件发送给某人或其他人?

我可以添加一个ng-click处理程序。我尝试进行该更新,location.href但它刷新了页面。我已经看到了建议history.pushState()history.replaceState()但似乎有同样问题的答案。

我可以设置href选项卡,以便用户可以从选项卡上的上下文菜单中选择“复制链接地址”,但由于选项卡是一个空的锚点,href我担心这会改变行为。(无论如何,我不知道如何设置它href。)

也许我可以在上下文菜单中添加“复制选项卡地址”或其他内容。

我查看了如何更改 uib-tabset 中每个选项卡的路由,但那里的答案没有参考uib-tabset,甚至认为这似乎是问题所要问的。

4

1 回答 1

0

您可以使用深度链接来实现您的目标。

本文可以帮助您 使用 ui-router 进行深度链接

正如我们所知,ui-router 是在 Angular 应用程序中管理路由到另一个状态的最流行的方式。在这里,我们创建一个包含其他子状态的父状态。现在,当您向他们提供 url 时,它将充当普通 url,可以添加书签或发送给某人。

$stateProvider
  .state("main", { abstract: true, url:"/main", templateUrl:"main.html" })
  .state("main.tab1", { url: "/tab1", templateUrl: "tab1.html" })
  .state("main.tab2", { url: "/tab2", templateUrl: "tab2.html" })
  .state("main.tab3", { url: "/tab3", templateUrl: "tab3.html" });
})

现在通过添加 ng-repeat 来生成选项卡列表并设置值以选择和激活

<tabset>
  <tab
    ng-repeat="t in tabs"
        heading="{{t.heading}}"
        select="go(t.route)"
        active="t.active">
  </tab>
</tabset>

此状态的控制器将像这样

$scope.go = function(route){
  $state.go(route);
};

$scope.active = function(route){
  return $state.is(route);
};

$scope.$on("$stateChangeSuccess", function() {
  $scope.tabs.forEach(function(tab) {
    tab.active = $scope.active(tab.route);
  });

这种方式可以做到

于 2017-07-26T09:46:55.803 回答