2016-07-21 4 views
1

Angular JsのIonicフレームワークを使用してiosアプリケーションを構築しています。私のルーティングの例ここAngular Jsでajaxが完了する前にビューを読み込む方法は?

.state('app.friends', { url: '/friends', cache: false, requireLogin: true, views: { 'menuContent': { templateUrl: 'templates/friends.html', controller: 'friendsCtrl' } } })

iはテンプレートfriends.htmlをロードMとそのコントローラ以下私のアプリで はfriendsCtrlあります。 friendsCtrlでは、私はAPI呼び出しを呼び出し、json形式の友人のリストを取得するajax関数を持っています。 ajaxが完了するまで、私のテンプレートがビューにロードされないという問題があります。 apiに大きなデータがあるときは、非常に時間がかかることがあります。だから私はAjaxが完了するまで空のビューを表示したい。ビューのレンダリング前にajaxを完了するための多くの質問と回答を見ましたが、私の場合、Ajaxが完了する前にビューをレンダリングしたいと思っています。これを行う方法は私に示唆してください。

おかげ

答えて

1

あなたはhttps://docs.angularjs.org/api/ng/service/ $ qをまた

を参照して、これを達成するために繰延オブジェクト($ qを)使用することができ、あなたは周りにそれを包むことにより、後の時点で発生するロードを強制することができますタイムアウト機能($タイムアウト) - https://docs.angularjs.org/api/ng/service/ $タイムアウトを参照してください

EDIT

someFunc() { 
    $scope.somevar = {}; 
    $http.get('url').then(
     function(response){ 
      $scope.someVar = response.data; 
     }); 
    return $scope.somevar;  // returns {} 
} 

====================================== 

    someFunc() { 
     var deferred = $q.defer(); 
     $http.get('url').then(
      function(response){ 
       $scope.someVar = response.data; 
       deferred.resolve(); 
      }); 
     return deferred.promise; // return a promise to set someVar 
    } 

    var $scope.somevar = {}; 
    someFunc().then(
     function() { 
      console.log("somevar is set"); 
     }); 
+0

答えのための@正解ありがとうございます。私は$ qの使い方を理解していません。いくつかの例を見せてください。ありがとう –

関連する問題