要向Angular添加依赖项,这就是文档告诉您的操作:
//inject directives and services.
var app = angular.module('fileUpload', ['ngFileUpload']);
app.controller('MyCtrl', ['$scope', 'Upload', function ($scope, Upload) {...
但我们可以将指令直接注入控制器,如下所示:
var app = angular.module('fileUpload', []);
app.controller('MyCtrl', ['ngFileUpload','$scope', 'Upload', function (ngFileUpload,$scope, Upload) {...
答案 0 :(得分:1)
没有模块基本上是基础或工具箱"如果你愿意的话。您需要将一个模块注入另一个模块,以便它可以访问其工具" (过滤器/指令/服务等)。原因是该模块负责依赖性加载和操作顺序。这是当你要求一个"工具"从模块到控制器你可以确定它在那里(或者会抛出错误)。
模块可以将其他模块列为其依赖项。根据模块的不同,需要在加载需求模块之前加载所需的模块。换句话说,所需模块的配置块在需求模块的配置块之前执行。运行块也是如此。即使多个其他模块需要,每个模块也只能加载一次。
当您将一个模块注入另一个模块时,您说"模块A需要模块B"中的内容。现在,当您需要特定工具时,将其注入控制器,以便您可以访问该特定工具。
所以考虑一下:
var app = angular.module('myApp', ['ngFileUpload']);
app.controller('MyCtrl', ['$scope', 'Upload', function ($scope, Upload) {
.....
Upload.upload(uploadData).then(function (resp) {
//success
}, null, function (evt) {
//upload progress
});
.....
}]);
因为您在ngFileUpload
模块中注入myApp
控制器现在可以从Upload
模块注入ngFileUpload
服务,控制器无需担心服务存在(如果不存在,您将从角度获得注入错误)。