编程语言
首页 > 编程语言> > javascript-未定义的AngularJS常量不是对象

javascript-未定义的AngularJS常量不是对象

作者:互联网

是Angular的新功能,我正在尝试从单独的文件中注入常量.它似乎可以与DI一起使用,但是当我尝试使用它时,出现一个错误:错误:未定义不是对象(评估’CApiEndpoints.authUrl’).

我按照Accessing AngularJS constants中的建议尝试了点符号和方括号,但继续收到错误.

这些文件包含在index.html中,并且DI不会抱怨.

index.html

<script type="text/javascript" src="js/angular/constants.js"></script>
<script type="text/javascript" src="js/angular/app.js"></script>

js / angular / constants.js

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

app.constant('CApiEndpoints', {
    authUrl:        'http://api.example.com/v1/',
    ...
});

和我的js / angular / app.js

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

app.controller('pageController', ['$scope', '$route', '$http', '$cookies', 'CApiEndpoints', function($scope, $route, $http, $cookies, $routeParams, $location, CApiEndpoints){

    console.log(CApiEndpoints);  // shows 'undefined'

    $http({
        method  : 'GET',
        url     : CApiEndpoints.authUrl + 'user_info'
    })
    .then(
      function successCallback(response) {
        console.log(response);
      },
      function errorCallback(response) {
        console.log(response);
    });
}]);

任何帮助,将不胜感激.我已经搜索了最近2个小时,试图找出答案.

解决方法:

使用DI inline array annotation在控制器函数内部注入依赖项时,它们必须遵循将它们注入数组的顺序.

如果遵循上述规则,您将知道函数中有两个额外的参数,因此应删除这两个不需要的依赖项($routeParams,$location).

app.controller('pageController', ['$scope', '$route', '$http', '$cookies', 'CApiEndpoints', 
   function($scope, $route, $http, $cookies, CApiEndpoints){

      //controller code

   }
]);

如果您没有误添加这些参数,则应在函数&的两侧添加这些参数.数组.

app.controller('pageController', ['$scope', '$route', '$http', '$cookies', '$routeParams', '$location', 'CApiEndpoints', 
   function($scope, $route, $http, $cookies, $routeParams, $location CApiEndpoints){

      //controller code

   }
]);

标签:angularjs-controller,angularjs,dependency-injection,javascript
来源: https://codeday.me/bug/20191027/1945031.html