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