2016-04-02 3 views
0

私は配列にキーを保存したい。Javascriptファイルストアキーをonloadメソッドにレンダリングしますか?

for (var i = 0; i < this.uploadedImages.length; i++) { 
    var reader = new FileReader(); 
    var vm = this; 
    reader.onload = function(e,i) { 
     var imageSrc = e.target.result; 
     vm.items.push({image : imageSrc,index : i}); 
    } 
    reader.readAsDataURL(input.files[i]); 
} 

items配列のインデックスキーにiを格納する方法。

今、私はthis.uploadedImages配列に4要素を渡しました。これは、配列配列をチェックすると、ストア3のようなすべての要素になります。これを行うにはどのようにこの

{ {image : 'path',index : 0},{image : 'path',index : 1}, 
    {image : 'path',index : 2},{image : 'path',index : 3} } 

のような私が欲しい

{ {image : 'path',index : 3},{image : 'path',index : 3}, 
    {image : 'path',index : 3},{image : 'path',index : 3} } 

おかげ

答えて

1

あなたが現在閉鎖問題を持って助けてください。

i varが、それが迅速かつ汚いソリューションは、ループ反復中に実行して作成し、他の機能とコールバック関数をラップすることです。3.

の最後の値のしている間、ループが終了した後onloadコールバックが実行されます現在の値を持つvar。

reader.onload = function(idx){ 
     return function(e) { 
      var imageSrc = e.target.result; 
      vm.items.push({image : imageSrc,index : idx}); 
    }}(i) 

このようにチェックしてくださいJSFIDDLE例。

+0

ありがとうございます –

関連する問題