0

我正嘗試使用html5Mode從SPA中的url中刪除#。在angularjs v 1.3.14中使用$ locationProvider時出現錯誤。 我不知道爲什麼它會發生。我在下面提到了代碼和控制檯錯誤。

前端:

<!doctype html> 
<html ng-app="app"> 
<head> 
<meta charset="utf-8"> 
<title>Untitled Document</title> 
<link rel="stylesheet" type="text/css"  href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular-route.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular-cookies.min.js"></script> 
<script src="app/controller.js"></script> 
</head> 

<body ng-controller="sample-controller" class="container"> 
    <div ng-view></div> 
</body> 
</html> 

我的控制器:

var app=angular.module('app',['ngRoute','ngCookies']); 

app.config(['$routeProvider','$locationProvider','$httpProvider',function($routeProvider, $locationProvider, $httpProvider){ 
$routeProvider 
    .when('/', { 
     templateUrl : "/angular-practice/route/family.html", 
     controller : "sample-controller" 
    }) 
    .when('/login', { 
     templateUrl : "/angular-practice/route/login.html", 
     controller : "sample-controller" 
    }) 
    .when('/oops', { 
     templateUrl : "/angular-practice/route/oops.html", 
     controller : "sample-controller" 
    }) 
    .otherwise({ redirectTo: '/oops',controller : "sample-controller" }); 

    //$httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; 

    $httpProvider.defaults.timeout = 5000; 
    $locationProvider.html5Mode(true); 
}]); 

控制檯錯誤

Error: [$location:nobase] http://errors.angularjs.org/1.3.14/$location/nobase 
M/<@https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:6:417 
Me/this.$get<@https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:98:414 

回答

1

您將n eed ta add:

<base href="/"> 

在您的主html文件的頭部分。這是因爲Angular要求您在設置「$ locationProvider.html5Mode(true);」時指定網址。你可以在這裏的文檔中看到它:https://docs.angularjs.org/guide/ $ location。

HTML文件應該是這樣工作的:

<!doctype html> 
<html ng-app="app"> 
<head> 
<meta charset="utf-8"> 
<base href="/"> 
<title>Untitled Document</title> 
<link rel="stylesheet" type="text/css"  href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"> </script> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular-route.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular-cookies.min.js"></script> 
<script src="app/controller.js"></script> 
</head> 

<body ng-controller="sample-controller" class="container"> 
    <div ng-view></div> 
</body> 
</html> 
+0

IM與此爭奪bro..thanks您的答覆..我會嘗試 –

+0

控制檯錯誤「NetworkError:404未找到 - HTTP: //localhost/app/controller.js「..我的html文件路徑是角度練習/ route.and我的索引在裏面角度practice.and我的控制器裏面的應用程序文件夾 –

+0

我認爲它正確的方式我的根<基地href =「/角度練習/」> –

相關問題