Angular UI-Router无法使用url'/'为父状态创建嵌套状态,但是使用url'/ something'成功获取父状态?

时间:2016-03-22 20:51:40

标签: angularjs angular-ui-router

如果我将路由器配置定义为:

export function routerConfig($stateProvider, $urlRouterProvider, $locationProvider) {
  'ngInject';
  $locationProvider.html5Mode(true);

  $stateProvider
    .state('myapp', {
      url: '/',
      templateUrl: 'app/main/main.html',
      controller: 'MainController',
      controllerAs: 'main'
    })
    .state('searchResults', {
      url: '/search',
      parent: 'myapp',
      templateUrl: 'app/search-results/search-results.html',
      controller: 'SearchResultsController',
      controllerAs: 'srchRes'

    });

  $urlRouterProvider.otherwise('/');
}

当我尝试点击http://localhost/search时,我被重定向到http://localhost。我不知道原因是什么?

但是这段代码正在运作:

export function routerConfig($stateProvider, $urlRouterProvider, $locationProvider) {
  'ngInject';
  $locationProvider.html5Mode(true);

  $stateProvider
    .state('myapp', {
      url: '/myapp',
      templateUrl: 'app/main/main.html',
      controller: 'MainController',
      controllerAs: 'main'
    })
    .state('searchResults', {
      url: '/search',
      parent: 'myapp',
      templateUrl: 'app/search-results/search-results.html',
      controller: 'SearchResultsController',
      controllerAs: 'srchRes'

    });

  $urlRouterProvider.otherwise('/');
}

现在我http://localhost/myapp/search工作正常。

无法在“url”属性设置为“/”root的状态下创建嵌套状态吗?

1 个答案:

答案 0 :(得分:1)

我相信url属性是可选的,如果你从父级删除它,你应该能够导航到没有任何问题的孩子