$stateProvider 不会使用 $urlRouterProvider.otherwise 路由

$stateProvider won't route with $urlRouterProvider.otherwise

以前当“/”是“/main”时它是工作的,它能够加载 main 和 dashboard 为 $urlRouterProvider.otherwise("/main/dashboard");

但现在我已经改为“/”而不是“/main”,它不起作用,它只加载主而不是仪表板。我已经更改了代码,因为我正在使用 Active Directory Authentication Library,它有一个循环问题。

以下是代码示例(config.js)

    myapp.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', '$compileProvider', '$httpProvider', 'adalAuthenticationServiceProvider',
    function ($stateProvider, $urlRouterProvider, $locationProvider, $compileProvider, $httpProvider, adalProvider) {


    $compileProvider.debugInfoEnabled(true);
    $locationProvider.html5Mode(true).hashPrefix('!');


    $urlRouterProvider.otherwise("/dashboard");
    $stateProvider

    // Main content
    .state('main', {
      abstract: false,
      url: "/",
      templateUrl: "/app/views/common/content.html"
    })
    .state('main.dashboard', {
      url: "dashboard",
      templateUrl: "/app/views/dashboard.html",
      requireADLogin: true,
      data: {
        pageTitle: 'Dashboard'
      }
    })
    .state('main.usermanagement', {
      url: "/usermanagement",
      template: "<div ui-view></div>",
      requireADLogin: true
    }); 

 }])

关于如何解决这个问题有什么想法吗?

对主要部分使用此默认子状态:

 $urlRouterProvider.when('/', '/dashboard');

你应该写 url 以 '/' 开头

 .state('main.dashboard', {
    url: "/dashboard",
    templateUrl: "/app/views/dashboard.html",
    requireADLogin: true,
    data: {
    pageTitle: 'Dashboard'
 }
})

问题是你没有以正确的方式定义 URL

请在下方使用,url 应以 /

开头

$urlRouterProvider.otherwise("/dasenter code herehboard");

$stateProvider  
.state('main', {
  abstract: false,
  url: "/",
  templateUrl: "/app/views/common/content.html"
})
.state('main.dashboard', {
  url: "/dashboard",  // you missed slash `/` here
  templateUrl: "/app/views/dashboard.html",
  requireADLogin: true,
  data: {
    pageTitle: 'Dashboard'
  }
})

试一试

如果有人在使用时遇到这个问题,下面的代码已经解决了我的问题 Active Directory Authentication Library:

$urlRouterProvider.otherwise(function ($injector, $location) {
    var $state = $injector.get("$state");
    $state.go("main.dashboard");
});