【问题标题】:error while using angular constant使用角度常数时出错
【发布时间】:2014-07-18 13:47:57
【问题描述】:

我正在尝试在 ny 项目中使用角度常量,我需要通过向 config.json 文件发出 http 请求来获取该常量。但是当我尝试在任何控制器中注入该常量时,角度会给我以下错误: 未捕获的错误:[$injector:modulerr] 无法实例化模块仪表板,原因是: 错误:[$injector:unpr] 未知提供者:$http 我的角度常数和路线代码看起来像这样。

     'use strict';

    var dashboard = angular.module('dashboard', [
       'ngResource',
       'ngSanitize',
       'ngRoute',   
     ]);

    dashboard.config(function($routeProvider) {
        $routeProvider
          .when('/:appName', {
          templateUrl: 'views/dashboard_landing.html',
          controller: 'displayController'
        })
          .when('/:appName/individual/session/graph', {
          templateUrl: 'views/individual_session_graph.html',
          controller: 'indSessionGraphCtrl'
        })
          .when('/:appName/individual/session/piechart', {
          templateUrl: 'views/individual_session_pie.html',
          controller: 'indSessionPieCtrl'
        })
          .when('/:appName/individual/activity', {
          redirectTo: ':appName/individual/session/graph'
        })
          .when('/:appName/individual/engagement', {
          templateUrl: 'views/individual_engagement.html',
          controller: 'indEngagementCtrl'
        })
          .when('/:appName/overall/session/graph', {
          templateUrl: 'views/overall_session_graph.html',
          controller: 'oveSessionGraphCtrl'
        })

        .otherwise({
          redirectTo: '/lecafe'
        });
      });


    dashboard.config(function ($provide, $http) {
        $provide.constant('baseURL',function() {
          $http({
            method:'GET',
            url:'/baseurl.json'
          })
          .success(function(data){
            var baseURL = data[0].baseURL;
            return baseURL;
          })
          .error(function(){
          });
        });
      });

谁能帮我解决这个错误。 提前谢谢你...

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    这与这个问题非常相似:use $http inside custom provider in app config, angular.js

    简而言之,您不能在 .config 部分中使用 $http,因为 $http 本身尚未配置。但是您可以使用一些方法来实现您想要的。

    我个人的理想:如果您可以控制 baseurl.json 的内容,您可以将其更改为运行的 .js 文件

    angular.module('dashboard').constant('baseURL', 'http://...');
    

    并将其包含在结束正文标记之前

    <script type="text/javascript" src="/baseurl.js"></script>
    

    我经常使用这种模式来将各种设置包含到应用程序中。

    如果这不是一个选项,您可以按照这个问题中的方法:AngularJS : Initialize service with asynchronous data

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-15
      • 1970-01-01
      • 1970-01-01
      • 2018-07-03
      • 2017-02-09
      • 1970-01-01
      • 2017-11-17
      相关资源
      最近更新 更多