【发布时间】:2017-02-01 18:53:42
【问题描述】:
这是我正在尝试做的一个简单示例。我首先要说的是,我已经在一个已经构建的 Angular 项目中作为维护者工作了 3 周,并且我对 Angular 迄今为止的理解是次要的,充其量。我可以使用控制器、视图和模型,一切都很好。但是当需要理解依赖注入时,我被模糊的错误所困扰。现在是时候我需要了解 Injector 的工作原理了,所以这是我为自己的学习目的而构建的一个小型测试应用程序。我实际上根本不知道这是否是构建 Angular 应用程序的正确方法。我觉得文档充其量是令人困惑的。
html
<div ng-app="app">
<div ng-controller="EC as e">
</div>
</div>
javascript
var app = angular.module('app',[]);
app.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push(function($q, $window) {
return {
'request': function(config) {
config.headers['Authorization'] = 'bearer '+ $window.localStorage.token;
return config;
}
};
});
}]);
function EC($scope,$http,$window) {
var vm = this;
vm.api = function( resource ){
return ('https://api.website.com/v1/'+resource).replace('//','/');
};
$window.localStorage.token = 'foobar';
$http.put( vm.api('/users/me'), { loggedIn: true }).then(function(response){
$http.get( vm.api('/users/me') ).then.function(response){
vm.user = response.data;
});
});
}
EC.$inject = ['$scope','$http','$window'];
app.controller('EC',EC);
app.run();
我曾假设EC.$inject = ['$scope','$http','$window']; 行将确保我的控制器构造函数将与这些服务一起调用,或者不管它们被称为什么,作为参数。显然情况并非如此。有人可以像我 5 岁一样向我解释这是如何工作的,以及为什么我会出错?
错误信息:
Error: [$injector:modulerr] http://errors.angularjs.org/1.5.6/$injector/modulerr
【问题讨论】:
标签: angularjs dependency-injection dependencies