angular ui-router父url设置为/

Jef*_*rey 13 angularjs angular-ui-router

使用ui-router并设置父状态url /导致我的url看起来像localhost:8000/#//child查看子页面时.我想/在哈希和孩子之间只有一个.

我尝试将父状态url留空,但是当使用锚链接时,ui-sref将不会链接回父状态.任何人都有一个解决方案,有一个根级别未命名的父网址?

的app.config

app.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise("/");

$stateProvider
  .state("main", {
    url: "/",
    templateUrl: 'sites/main/main.html',
    controller : 'MainController',
    resolve: {
      items: function(srvMenu) {
          return srvMenu.getNav();
      }
  }

 })

});
Run Code Online (Sandbox Code Playgroud)

child.config

emergency.config(function($stateProvider) { 
$stateProvider
    .state("main.emergency", {
      url: "/emergency",
      templateUrl: 'sites/emergency/emergency_menu.html',
      controller : 'EmenuController',
      resolve: {
          emenu: function(srvEmergency) {
              return srvEmergency.getMenu();
          }
      }

    })

    .state("main.emergency.detail", {
      url: "/detail",
      templateUrl: 'sites/emergency/emergency_detail.html',
    })
});
Run Code Online (Sandbox Code Playgroud)

Rad*_*ler 25

ui-router有解决方案(几乎)任何东西.有一个工作的plunker.我们将采取的行动称为:绝对路线(^)

那么,让我们从需求开始,拥有这些URL路由:

domain/#/                             -- root for main
domain/#/emergency/                   -- main.emergency
domain/#/emergency/detail             -- main.emergency.detail
Run Code Online (Sandbox Code Playgroud)

使用此ui-sref状态调用时应该使用哪个:

<ul>
    <li><a ui-sref="main">Main</a></li>
    <li><a ui-sref="main.emergency">Emergency</a></li>
    <li><a ui-sref="main.emergency.detail">Detail</a></li>
</ul> 
Run Code Online (Sandbox Code Playgroud)

现在,诀窍是:

  • (第一)国必须使用url: "/",以获得一些独特的标识
  • 但是下一个状态可以再次从根开始定义:使用此设置:
    url: "^/..."

这是状态配置,可以实现所需的结果

  $stateProvider
    // root with '/'
    .state("main", {
      url: "/",
      templateUrl: 'main.tpl.html',
    })
    // here we start again from the root '/emergency'
    .state("main.emergency", {
      url: "^/emergency",
      templateUrl: 'emergency_menu.tpl.html',
    })
    // parent and child '/emergency/detail
    .state("main.emergency.detail", {
      url: "/detail",
      templateUrl: 'emergency_detail.tpl.html',
    });
Run Code Online (Sandbox Code Playgroud)

这是文档:

绝对路线(^)

......和工作的掠夺者 ......