2016-05-25 6 views
1

からのアクセスを動的に作成フォーム要素は、私がNGリピートで生成された簡単なフォームを、持っています。角度コントローラ

$scope.addFormElement = function() { 
    $scope.models.push({ value: "test"}); 

    console.log($scope.myForm); 
    for (var i = 0; i < $scope.models.length; i++) { 
     console.log($scope.myForm["formElement"+i]); 
    } 
}; 

問題:最初のコンソールログに、私は現在、追加された新しい入力フィールドを見ることができますが、私はサイクルのために具体的な要素を印刷しようとすると、それは「未定義」ログに記録しますここでは、コードです。要素を追加すると、最後に追加された要素は常に最初のログに定義されますが、2番目には定義されません。理由は何ですか?

Printscreen of logs here

答えて

2

私はあなたが解決策を見つけるでしょうplnkrを作った:

$timeout(function(){ 
    for (var i = 0; i < $scope.models.length; i++) { 
    console.log($scope.myForm["formElement"+i]); 
    } 
}); 

https://plnkr.co/edit/oTttVJrAOiSRn3jfde5q

あなたは$タイムアウト以内にそれを呼び出す必要があります。あなたは、角度のの次のダイジェストサイクルを待つためにそれが必要です。内部的に$ timeoutは$ applyを呼び出し、双方向データバインドの同期を強制します。

関連する問題