1

私は、私の見解で反復して表構造を作成するモデルを持っています。私はボタンをクリックしてDBから最新の値を取得し、モデルに割り当てる必要があります。次にモデルのinnerHTMLを取得し、現在のビューのpdfを作成します。データがangularjsのモデルに割り当てられるまでの待ち時間

データがモデルに完全に割り当てられる前に、コンテナdivのinnerHTMLを取得する次の文がリフレッシュされ、私のビューの古いスナップショットが取得されるという問題に直面しています。どのようにしてモデルの割り当てが完了し、ビューがリフレッシュされるまで、私はステートメントの実行を保持できますか?

いかなる提案も高く評価されます。

答えて

1

$timeoutにコードをラップする必要があります。これにより、コードが次のサイクルで実行され、最新のスナップショットが取得されます。

$timeout(function(){ 
    <your code to get innerHtml> 
}) 

ビューが

PSを変更した後に呼び出されます。このように任意のタイムアウト値を言及する必要はありません:依存関係として$timeoutを追加します。

私は、角からNG-ショーを使用して、データをコントローラにロードされた場合にのみ、あなたのコンテンツを表示していました
+0

HTML: <div ng-app="myApp" ng-controller="myCtrl" data-ng-init="getValues()"> <div ng-show="dataLoaded"> <input type="number" ng-repeat="(key, value) in randomArray track by $index" ng-model="randomArray[key]"> </div> </div> CONTROLLER: .controller('myCtrl', function($scope) { $scope.getValues = function() { $scope.randomArray = ['myKey', 'anotherKey', 'thirdKey', 'key4']; angular.forEach($scope.randomArray, function(value, key){ $scope.randomArray[key] = 0; }); // Set dataLoaded to true $scope.dataLoaded = true; } }); 

CODEPENこれには十分である。とにかく、ありがとう。 –

+0

あなたはこれに時間を与える必要はありません。このタイムアウトは、ビューがリフレッシュされた後に実行されます。 –

+0

ashfaqに感謝しますが、空の$ timeoutがわれわれのために仕事をしていると、ダイジェストサイクルがトリガーされますが、モデルへのデータ割り当てが完了しても保証されません。 –

0

:私はどのくらいの時間間隔のだろうかわからないhttp://codepen.io/giannidk/pen/KrmgNL?editors=1011

+0

こんにちは。 what if:ステートメント '$ scope.dataLoaded = true;'それぞれが完了する前に実行されます。それが私の必要なものです。あなたの場合、データは小さいですが、巨大なデータの場合、同期実行はコードを破壊します。 –

+0

あなたはpromiseを使用する必要があり、データがロードされた後にのみ関数が実行されます。このコードをチェックしてください:http://codepen.io/giannidk/pen/akWGRp?editors=1011 – gianni

関連する問題