2014-01-13 50 views
0

我讀的代碼的一部分關於創建於angularjs裏面有服務手段,我不明白是什麼「這個」在這種情況下(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

問題是重複的。 查看回答:http://stackoverflow.com/a/4196018/1209020 – Ryan

+1

也這個帖子http://stackoverflow.com/questions/3127429/javascript-this-keyword –

回答

3

this指向服務本身。

recipesApp.service('uploadsService', function ($http) { 

該函數是一個構造函數。當用new調用時,角度是什麼,this是指創建的uploadsService實例。

this.uploadFile = function (files) { 

所以該行添加方法uploadFileuploadService

0

它指向意思功能範圍。沒有什麼特別的角度服務。

在特定情況下,它指向

function($http) { 
    var code = ''; 
    ... 
} 

功能的功能範圍。例如,您可以使用this.code訪問相同範圍內的code變量。

但是,如果您進入任何內部函數(如回調函數),則this將指向該函數的作用域,並且您將無法使用this指向父變量。

隨着this.uploadFile = function(file){...}您可在上下文定義一個函數變量,讓你從別的地方在你的應用程序中訪問「uploadsService」,你將能夠使用

uploadsService.uploadFile();