$ locationProvider.html5Mode中断路由 - AngularJS

时间:2016-03-27 09:13:09

标签: angularjs

我一直在寻找从AngularJS中的URL中删除#的方法,并找到了许多解决方案,这些解决方案指向我使用他们现在建议的方向在我的app.js中我有以下内容:

var app = angular.module('mainApp', ['ngRoute', "oc.lazyLoad"]);

app.config(function ($routeProvider, $locationProvider) {

$routeProvider
    .when('/home',
    {
        templateUrl: '/Templates/Home/home.html',
    })
    .when('/About',
    {
        templateUrl: '/Templates/About/About.html'
    })
    .when('/home/:page_number',
    {
        templateUrl: '/Templates/Params/params.html',
        resolve: {
            loadMyCtrl: ['$ocLazyLoad', function ($ocLazyLoad) {
                return $ocLazyLoad.load('Templates/Params/paramsController.js');
            }]
        }
    })
    .otherwise('/home',
    {
        templateUrl: '/Templates/Home/home.html'
    });


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

});

在SiteMaster.Html的头部里面我已经放置

 <base href="/">

完全分解:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

    <script src="Scripts/angular.min.js"></script>
    <script src="Scripts/angular-route.min.js"></script>
    <script src="Scripts/app.js"></script> <!-- Consists of Routing  -->
    <script src="Scripts/ocLazyLoad.js"></script>
    <title>Angular Routing Tutorial</title>

    <base href="/">
</head>
<body ng-app="mainApp">
    <h1>sitemaster Template</h1>
    <div ng-view></div>
</body>

</html>

然而,当我运行这个时,当我操纵URL为/关于我得到

时,我会被定向到/ home

HTTP错误404.0 - 未找到 您要查找的资源已被删除,名称已更改或暂时不可用。

同样适用于/ home / SomeValue

然而,当我删除

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

删除base href =&#34; /&#34;从我的SiteMaster.Html中,路线按预期工作?

有人可以向我解释为什么会发生这种行为吗?

0 个答案:

没有答案