启用html5Mode时,ui-router不会路由到$ urlRouterProvider.otherwise

时间:2018-04-28 17:47:26

标签: angularjs angular-ui-router

我会尝试以一种非常简单的方式。

这是路由文件以供参考:

angular
        .module("app")
        .config(function($stateProvider,$locationProvider,$urlRouterProvider){

            $urlRouterProvider.otherwise("dashboard");

            $stateProvider
                    .state("home",{
                        url: "/",
                        templateUrl: "views/home/home.html"
                    })

                    .state("login",{
                        url: "/login",
                        templateUrl: "views/login/login.html"
                    })

                    .state("home.dashboard",{
                        url: "dashboard",
                        templateUrl: "views/home/dashboard.html"
                    });       
             $locationProvider.html5Mode(true);
});


现在,当我发表评论$locationProvider.html5Mode(true);时,路线会正常转到dashboard。这是网址http://localhost/#/dashboard

但是当我尝试使用html5Mode(with <base href="/"> tag set in index.html时,它并没有路由到dashboard。相反,它会路由到home.html。这就是我得到的http://localhost/。 (home.html加载,而不是dashboard.html)


我真的想知道为什么当html5Mode被评论时它成功路由到dashboard以及为什么它在没有评论时没有 请社区帮助我。

1 个答案:

答案 0 :(得分:0)

When html5Mode is enabled,表示相对链接的URL重写。

这必须解决问题,(前缀仪表板网址 /

.state("home.dashboard",{
  url: "/dashboard",
  templateUrl: "views/home/dashboard.html"
}); 

这是另一个接近(传递一个对象并将requireBase设置为false):

.state("home.dashboard",{
  url: "dashboard",
  templateUrl: "views/home/dashboard.html"
});

$locationProvider.html5Mode({ enable: true, requireBase: false })