0

AngularJS アプリで json データを読み込んでいるときに、「読み込み中...」というメッセージを表示したいと考えています。メッセージの表示とデータの読み込みは、メイン モジュールの実行ブロックで行われます。問題は、実行ブロックが実行されたときにブラウザーが DOM をレンダリングしていないため、メッセージが表示されないことです。実行ブロックはいつ実行されますか? 最初にページを表示し、次にデータの読み込みを開始してメッセージを表示するという、目的を達成するにはどうすればよいでしょうか?

私のコードはここにあります: www.esatoivola.net/kirkkovuosi

4

1 に答える 1

1

「実行ブロックはいつ正確に実行されますか?」

実行ブロック-インジェクターが作成された後に実行され、アプリケーションをキックスタートするために使用されます。実行ブロックに注入できるのは、インスタンスと定数のみです。これは、アプリケーションの実行時にシステムがそれ以上構成されないようにするためです。-モジュールドキュメント

「どうすれば...最初にページを表示してから、データの読み込みを開始してメッセージを表示できますか?」

ng-showと$scopeまたは$rootScopeプロパティ(最初はtrueに設定)を使用して、「Loading」メッセージの表示を制御できます。メインコントローラーはデータをロードできます。データが戻ってきたら、ビューに関連付けられた$ scopeプロパティを設定し、「showLoadingMessage」プロパティをfalseに設定します。

HTML:

<div ng-controller="MyCtrl">
  <div ng-show="showLoadingMessage">Loading... </div>
  <ul>
     <li ng-repeat="item in data">
        ....
     </li>
  </ul>
</div>

コントローラ:

function MyCtrl($scope, $resource) {
    $scope.showLoadingMessage = true;
    var dataResource = $resource('/somewhere/else');
    dataResource.query( function(data) {
       $scope.showLoadingMessage = false;
       $scope.data = data; 
    });
}
于 2013-01-17T22:32:11.127 に答える