关于angularjs:无法在angular.js中使用$ httpProvider和locationProvider

can't use $httpProvider and locationProvider in angular.js

我是angular.js的新手。我使用了$ httpProvider和$ locationProvider

1
2
3
4
5
6
7
8
9
  <script src="lib/angular/angular.min.js">
  <script src="lib/angular/angular-route.min.js">
  <script src="lib/angular/angular-cookies.min.js">
angular.module('myApp', [
  'ngRoute','ngCookies'  
]).config(['$routeProvider' , '$locationProvider', '$httpProvider' ,function($routeProvider) {
  $httpProvider.defaults.timeout = 5000;  // error
  $locationProvider.html5Mode(true);  // error
}])

应用程序运行时,出现错误:未捕获的错误:[$ injector:modulerr] http://errors.angularjs.org/1.3.0-beta.2/$injector/modulerr?p0=myApp


我认为您忘记添加$locationProvider$httpProvider作为我们的config函数的参数。

尝试一下:

1
2
3
4
5
6
7
8
9
10
11
  <script src="lib/angular/angular.min.js">
  <script src="lib/angular/angular-route.min.js">
  <script src="lib/angular/angular-cookies.min.js">
   angular.module('myApp', [
  'ngRoute','ngCookies'  
   ]).
   config(['$routeProvider' , '$locationProvider', '$httpProvider',
   function($routeProvider, $locationProvider, $httpProvider) {
   $httpProvider.defaults.timeout = 5000;  
   $locationProvider.html5Mode(true);  
   }])

首先,您应该添加以下脚本:

1
2
3
<script src="lib/angular/angular.min.js">
<script src="lib/angular/angular-route.min.js">
<script src="lib/angular/angular-cookies.min.js">

然后您应该配置:

1
2
3
4
5
6
var app = angular.module('myApp', ['ngRoute','ngCookies']);

app.config(['$routeProvider' , '$locationProvider', '$httpProvider', function ($routeProvider, $locationProvider, $httpProvider) {
      $httpProvider.defaults.timeout = 5000;
      $locationProvider.html5Mode(true);
}]);

注意:为避免错误:HTML5模式下的[$ location:nobase] $ location必须存在一个标签!)不要忘记添加:

1
2
3
4
5
6
<head>
...
...
<base href="/">
...
</head>

您忘记将$locationProvider$httpProvider作为参数注入。

1
2
3
4
5
6
var app = angular.module('myApp', ['ngRoute','ngCookies']);

app.config(['$routeProvider' , '$locationProvider', '$httpProvider', function ($routeProvider, $locationProvider, $httpProvider) {
      $httpProvider.defaults.timeout = 5000;  // error
      $locationProvider.html5Mode(true);  // error
}]);

在这里,您添加了回调函数之前的字符串(在配置,控制器或指令中)是为了缩小JS,以允许angular匹配缩小的变量及其含义。

因此,您应该将所需的变量添加为参数:

1
2
3
4
5
6
7
8
angular.module('myApp', [
  'ngRoute','ngCookies'  
]).config(
['$routeProvider' , '$locationProvider', '$httpProvider',
function($routeProvider,  $locationProvider, $httpProvider) {
    $httpProvider.defaults.timeout = 5000;  
    $locationProvider.html5Mode(true);  
}])