2

我正在使用 UI-Router(-extras) 开发一个 AngularJs 应用程序,其中我使用以下设置:

  .state('root', {
    url: '/{language:(?:nl|en)}',
    views: {
      'root': {
        templateUrl: 'app/root/root.html',
        controller: 'RootController'
      }
    }
  })
  .state('root.main', {
    views: {
      'main': {
        templateUrl: 'app/main/main.html',
        controller: 'MainController'
      }
    },
    sticky: true
  })
  .state('root.modal', {
    url: '/{locale:(?:nl|fr)}',
    views: {
      'modal': {
        templateUrl: 'app/modal/modal.html',
        controller: 'ModalController'
      }
    }
  })

根状态定义 URL 中的语言。此外,我有几个模态和主要状态,它们有自己的 URL(即root.main.home=> /en/home)。

现在我想要一些没有 URL 的模态状态。我怎样才能让一个州忽略他父母的 URL?

4

1 回答 1

5

回答:

一个国家怎么能忽略他父母的 URL?

我们有

绝对路线 (^)

如果你想要绝对 url 匹配,那么你需要在你的 url 字符串前加上一个特殊符号 '^'。

$stateProvider
  .state('contacts', {
     url: '/contacts',
     ...
  })
  .state('contacts.list', {
     url: '^/list',
     ...
  });

所以路线会变成:

  • “联系人”状态匹配"/contacts"
  • 'contacts.list' 状态匹配"/list"。由于使用了 ^,因此未合并 url。

还要检查一下:如何在 angular.js 中实现自定义路由?

于 2015-08-31T11:51:18.667 回答