我阅读了有关在angularjs中创建服务的部分代码,我不明白在这种情况下“this”意味着什么(this.uploadFile = function (files)
)
recipesApp.service('uploadsService', function ($http) {
var code = '';
var fileName = '';
this.uploadFile = function (files) {
var fd = new FormData();
//Take the first selected file
fd.append("image", files[0]);
var promise = $http.post('/uploads/uploadFile.json', fd, {
withCredentials: true,
headers: {'Content-Type': undefined },
transformRequest: angular.identity
}).then(function (response) {
code = response.data.code;
fileName = response.data.fileName;
return{
code: function () {
return code;
},
fileName: function () {
return fileName;
}
};
});
return promise;
};
});
答案 0 :(得分:3)
this
指向服务本身。
recipesApp.service('uploadsService', function ($http) {
该函数是一个构造函数。使用new
进行调用时,this
指的是uploadsService
所创建的实例。
this.uploadFile = function (files) {
这一行将方法uploadFile
添加到uploadService
。
答案 1 :(得分:0)
它指向功能范围。没什么特别的角度服务。
在您的具体情况下,它指向
的功能范围function( $http ) {
var code = '';
...
}
功能。例如,您可以使用this.code
访问同一范围内的code
变量。
但是,如果你进入任何内部函数,例如回调,this
将指向该函数的范围,你将无法使用this
指向父变量。
使用this.uploadFile = function(file){...}
您在上下文中定义一个函数变量,以便从应用程序中的其他位置访问“uploadsService”,您将能够使用
uploadsService.uploadFile();