【问题标题】:$stateProvider won't route with $urlRouterProvider.otherwise$stateProvider 不会使用 $urlRouterProvider.otherwise 路由
【发布时间】:2017-06-30 11:22:55
【问题描述】:

它在“/”为“/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
    }); 

 }])

关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: angularjs url-routing


    【解决方案1】:

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

    请在下面使用like,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'
      }
    })
    

    试试看

    【讨论】:

    【解决方案2】:

    将这个默认的 childState 用于 main:

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

    你应该写以'/'开头的url

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

    【讨论】:

    • 是的,但我想导航为“/main/dashboard”,在现有结构中导航为“/dashboard”,因为“/”是主要的
    • 你需要在你的主状态视图中,意思是 content.html 以便 Angular 在其中注入仪表板状态。你有吗?
    【解决方案3】:

    以下代码已解决我的问题,如果有人在使用时遇到此问题 Active Directory Authentication Library:

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

    【讨论】:

      猜你喜欢
      • 2016-03-15
      • 2017-11-06
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多