angularjs - Angular ui-router 父 url 设置为/

标签 angularjs angular-ui-router

使用 ui-router 并将父状态 url 设置为 /结果我的网址看起来像 localhost:8000/#//child在查看子页面时。我只想要一个 /在哈希和 child 之间。

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

应用程序配置

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();
      }
  }

 })

});

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',
    })
});

最佳答案

ui-router (几乎)对任何事情都有解决方案。有一个工作plunker .我们将实际使用的功能称为:Absolute Routes (^)

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

domain/#/                             -- root for main
domain/#/emergency/                   -- main.emergency
domain/#/emergency/detail             -- main.emergency.detail

使用此 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> 

现在,诀窍是:
  • 根(第一个)状态必须使用 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',
        });
    

    这是文档:

    Absolute Routes (^)

    ...和工作 plunker ...

    关于angularjs - Angular ui-router 父 url 设置为/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23771229/

    相关文章:

    javascript - AngularJS 从 ng-repeat 创建的表单中选择值

    javascript - 为什么我的 Angular 代码似乎正在回发

    javascript - Angularjs orderby 对象键

    javascript - Angularjs - UI Router 中的新布局文件

    javascript - 如何通过路由器 Controller 更改 ngclass?

    javascript - 如何从 Angular Controller 中的 Phonegap 插件访问值?

    angularjs - 如何使用 Angular js中的服务和 Controller 显示模型类中的第一项

    angularjs - 使用 Angular UI 路由和 UI 模态在 AngularJS 中创建有状态的模态

    javascript - 如何在转换期间更改参数值?

    javascript - AngularJS 嵌套 $state 问题