2017-09-11 4 views
0

私はこのようなmain.htmlを持っています。名前カードとシステムの詳細が一定のままで、コンテンツはビューに応じて変化し続けます。データがロードされている間、Angular JSの高速解決と低速コントローラページは空です

 <div ui-view="nameCard"></div> 
     <div ui-view="systemDetail"></div> 
     <div ui-view="content"></div> 

imルーティング用にuiルートを使用しています。あるビューから別のビューに切り替えると、解決が最初に起こります(ここではページが最初に読み込まれます)、次にコントローラの初期化が行われ、データがロードされます。怠け者のコントローラのために、ユーザはしばらくの間空白のページで見るために残されます。 Spinnerロジックを追加する場所と方法は、ユーザーがデータが読み込まれるまでスピナーで見られるようにするためです。彼がボタンをクリックするとき、解決が起こる前にスピナーを有効にし、投稿がうまくいった後にスピナーを隠したいと思っています。メインページでそれを聞いてください。またはコンテンツページに追加する必要があります

答えて

0

この

$scope.$on('$viewContentLoaded', function(){ 
    // add show spinner code here 
}); 

のような状態の変化にスピナーを有効にして

$scope.$on('$viewContentLoaded', function(){ 
    // add hide spinner code here 
}); 
+0

ここでの問題は、状態の変化が非常に速いことです。私は、ルートが開始されたときにスピナーを有効にし、コントローラーがデータをdomに送信し終えたときにのみディスエーブルにしたい。 – Praveen

0

はあなたがHTMLの下にあると仮定したときに、コンテンツのロードを無効

<div class="icon-spinner" ng-show="displaySpin"> 

ルート変更が発生したとき、あなたは、関数でスピナーディスプレイ用$rootscope変数をバインドすることができます。

$rootScope.$on("$stateChangeStart", 
    function (event, toState, toParams, fromState, fromParams) { 
     $rootScope.displaySpin = true; 
    }); 

ページがロードされると、コントローラが初期化されるとき、 は、コントローラの1行目に次の操作を行います。

$rootScope.displaySpin = false; 
+0

Karun、ルートがとても速いです。私はスピンがルート変更のために走り続けることを望みます、そして、コントローラがデータをフェッチしている間も。コントローラがデータの読み込みを終了した後に停止したいだけです – Praveen

+0

はい、私の親愛なる、つまり、データ取得呼び出しの成功コールバック( 'then')関数内で値をfalseに設定することができます。 –

+0

アイコンのスピナーを内部に追加する必要がありますmain.htmlまたは対応するhtmlコンテンツ – Praveen