2017-09-02 4 views
0

私はbase64でエンコードされた文字列を自分のサーバーに送信しようとしていますが、私が使用するデータバインディングはそれを送信する機能です。データバインディングは他の関数で利用できません

これはコードです:

processFile: function(event) { 
     var rawFile = event.target.files[0]; 
     var reader = new FileReader(); 
     reader.readAsDataURL(rawFile); 
     reader.onload = function() { 
     this.file = reader.result.split(',')[1]; 
     }; 
    }, 

のでthis.fileはbase64文字列が含まれていますが、私は別の関数でそれにアクセスするとき、それは

は、私がここで間違って何をやっている「」戻っています?

+0

:' reader.onload =()=> { this.file = reader.result.split(」 、 ')[1]; } ' – talkhabi

+0

[コールバック内の正しい\' this \ 'にアクセスする方法]の複製がありますか?(https://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-inside-コールバック) – Bert

答えて

1

てみ

processFile: function(event) { 
     var rawFile = event.target.files[0]; 
     var reader = new FileReader(); 
     reader.readAsDataURL(rawFile); 
     reader.onload = function() { 
     this.file = reader.result.split(',')[1]; 
     }.bind(this); 
    }, 

または

processFile: function(event) { 
     var rawFile = event.target.files[0]; 
     var reader = new FileReader(); 
     reader.readAsDataURL(rawFile); 
     var vm = this; 
     reader.onload = function() { 
     vm.file = reader.result.split(',')[1]; 
     }; 
    }, 
あなたはこのように `ES6`を使用することができます
+0

ありがとう、これは働いた。 "this"をインスタンス化する必要がある理由を説明できますか? –

+1

ここに記載されていますhttps://stackoverflow.com/documentation/vue.js/9350/using-this-in-vue#t=20170902123251025151私は答えにリンクを追加することが許可されていません – Reiner

+1

残念ながら、あなたはそれをリンクすることが許されなかったのです。最近、私はこれらの質問をこれと重複して書いています。https://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-inside-a-callback – Bert

関連する問題