簡體   English   中英

我們應該在angular js版本1.3.14中使用$ locationProvider嗎

[英]shall we use $locationProvider in angular js ver 1.3.14

我正在嘗試使用html5Mode從SPA中的網址中刪除#。 在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

您需要添加:

<base href="/">

在您的主要html文件的頭部。 這是因為Angular要求您在設置“ $ locationProvider.html5Mode(true);”時指定url基。 您可以在以下文檔中閱讀有關它的信息: 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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM