2016-11-18 75 views
-1

我正在嘗試爲上傳用戶輸入做一個簡單的Angular表單。其中一個步驟涉及選擇圖像。我試圖從遠程源獲取圖像,然後將其上傳到服務器。試圖從onload()調用方法,我不知道是不是被告知方法

app.controller('submissionFormController', function ($http) { 
this.formIsVisible = false; 
... 
this.sub = { //this Object contains the data entered into the form 
      }; 

this.uploadImage = function(img){ 
    this.sub.imgfile = img; 
}; 

this.downloadImage = function() { 
    url = this.sub.imgurl; 
    var filename = url.substring(url.lastIndexOf("/") + 1).split("?")[0]; 
    var xhr = new XMLHttpRequest(); 
    xhr.responseType = 'blob'; 

    xhr.onload = function() { 
     this.uploadImage(xhr.response); 
     console.log("Image fetched!"); 
    }; 

    xhr.open('GET', url); 
    xhr.send(); 
}; 
}); 

當執行代碼時,我得到了以下錯誤:

Object doesn't support property or method 'uploadImage'

+0

@trincot更多信息雖然你鏈接的問題讓我的*什麼*走錯了一個好主意,它沒有給出一個特別簡潔的想法*如何解決它*。我不確定將此作爲重複是否是正確的過程 - 我認爲,這樣做可以幫助那些遇到同樣問題的人解決問題。 – UrhoKarila

+0

有很多方法。這裏是一個:'xhr.onload = function(){ ...} .bind(this);'。 – trincot

+0

謝謝,那就是訣竅!儘管如此,我仍然支持我早先的斷言 - 這個問題不應該被標記爲重複,並且您的評論確實[應該已經被做出了答案](http://meta.stackoverflow.com/a/297069/1673882) 。 – UrhoKarila

回答

0

有很多方法的。這裏是一個:

xhr.onload = function() { ... }.bind(this); 

你可以找到在這個question & answer

相關問題