0

アクションへの呼び出しの非同期結果を使用して、for ループで配列要素を割り当てようとしていますngResource

for ( var i = 0; i < projs.length; i++) {
    $scope.projets[i].redacteur = new Object(); // the Object where the result will be stored
    var param = new Object();
    param.email = projs[i].redacteurEmail;
    Agent.read(param, function(data) {
        $scope.projets[i].redacteur = data;
    });


}

問題は: コールバック関数が実行されたとき (データが受信されたとき)iが範囲外です (最後の を渡しましたi++)。次に、受信したデータが存在しないオブジェクトに割り当てられます。

この問題の解決策はありますか?

4

3 に答える 3

0

あなたの問題を正しく理解していれば、これでうまくいくと思います。

myData = Agent.read(param, function() {
    $scope.projets[i].redacteur = myData;
});

これは私が使用したアプローチです。私はまだ Angular に慣れていませんが、myData が延期された promise になることを理解しています。deferred promise として、使用前に解決する必要があります。Angular と deferred promise の経験が豊富な人が参加してください。

于 2013-11-15T08:03:54.870 に答える