2016-11-04 7 views
1

ループでユーザーが選択した値を削除しようとしています。Sequelizeを使用してループ内のDBから複数の値を削除しようとしたときにエラーが発生しました

 for (var i = 0; i < myArray.length; i++) { 
      MyService.myMapService.delete({id: myArray[i].myId }, myArray[i], function (response) { 
        if (response.isSuccessful) { 
         MyService.removeMyValue(myArray[i].myId); 
        } 
      }) 
     } 

はしかし、私は助けてください、次のエラー

angular.js:13920 TypeError: Cannot read property 'myId' of undefined

を受信し続けます!

+0

あなたがmyarrayの中に何がありますか? – Sravan

答えて

1

すべてのMyService.myMapService.delete関数呼び出しに対してforループが実行され、imyArray.lengthになっています。その後、myMapService.delete非同期呼び出しが完了した後、myArray[i].myId(iは配列の長さ、次にmyArray[i]は未定義)を実行しようとします。この場合、自己実行機能にラップすることによって価値を保持する必要があります。

コード

for (var i = 0; i < myArray.length; i++) { 
    (function(j) { 
    MyService.myMapService.delete({ 
     id: myArray[j].myId 
    }, myArray[j], function(response) { 
     if (response.isSuccessful) { 
     MyService.removeMyValue(myArray[j].myId); 
     } 
    }) 
    })(i); 
} 
関連する問題