【问题标题】:can't use $httpProvider and locationProvider in angular.js不能在 angular.js 中使用 $httpProvider 和 locationProvider
【发布时间】:2014-09-03 20:36:33
【问题描述】:

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

  <script src="lib/angular/angular.min.js"></script>
  <script src="lib/angular/angular-route.min.js"></script>
  <script src="lib/angular/angular-cookies.min.js"></script>
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&p1=Ref/localhost/lib/angular/angular.min.js)

我的angular-min.js、angular-route.js、angular-cookie.js都在1.3.0 beta.2,不知道为什么会这样?

【问题讨论】:

    标签: angularjs


    【解决方案1】:

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

    试试这个:

      <script src="lib/angular/angular.min.js"></script>
      <script src="lib/angular/angular-route.min.js"></script>
      <script src="lib/angular/angular-cookies.min.js"></script>
       angular.module('myApp', [
      'ngRoute','ngCookies'  
       ]).
       config(['$routeProvider' , '$locationProvider', '$httpProvider', 
       function($routeProvider, $locationProvider, $httpProvider) {
       $httpProvider.defaults.timeout = 5000;  
       $locationProvider.html5Mode(true);  
       }])
    

    【讨论】:

      【解决方案2】:

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

      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
      }]);
      

      【讨论】:

        【解决方案3】:

        首先你应该添加以下脚本:

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

        那么你应该配置:

        var app = angular.module('myApp', ['ngRoute','ngCookies']);
        
        app.config(['$routeProvider' , '$locationProvider', '$httpProvider', function ($routeProvider, $locationProvider, $httpProvider) {
              $httpProvider.defaults.timeout = 5000;
              $locationProvider.html5Mode(true); 
        }]);
        

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

        <head>
        ...
        ...
        <base href="/">
        ...
        </head>
        

        【讨论】:

          【解决方案4】:

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

          因此,你应该添加你需要的变量作为参数:

          angular.module('myApp', [
            'ngRoute','ngCookies'  
          ]).config(
          ['$routeProvider' , '$locationProvider', '$httpProvider',
          function($routeProvider,  $locationProvider, $httpProvider) {
              $httpProvider.defaults.timeout = 5000;  
              $locationProvider.html5Mode(true);  
          }])
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-08-20
            • 2013-06-09
            • 1970-01-01
            • 2011-07-09
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多