2016-06-01 8 views
0

私はいくつかのテンプレートを持つダッシュボードを持っています。ajaxテンプレート用の角度とプリローダー

テンプレートの1つでは、私は単純なリストを持っています。私はliの上にng-repeatを使用しています。そのようにして私のリストを動的に保ちます。 しかし、ここには -

$httpを使ってこのリストのデータを取得しているので、2番目または2番目の空のリストがある可能性があります。

このための良い解決策は、デフォルトで私のリストのプリローダーを追加することですが、そのロジックを追加するにはどのように提案しますか?最も簡単な方法は、次のように追加することです:

$http({ 
    method: 'GET', 
    url: './data/websites.json' 
}).then(function successCallback(response) { 
    // hide preloader, etc 
}); 

これは正しい方法でしょうか?

また、テンプレートの移行を制御するにはどうしてですか?例えば、ユーザは、私はXのミリ秒のためのプリローダーを表示したいページを残し、そしてだけにして、要求されたページ

+1

絶対最も簡単なのは、 'NG-show'とスコープ変数です。 'それで' falseに設定してください。私が気に入っているモジュールは 'cg-busy'です。 '$ http'を約束しておけば、残りの部分はすべて – charlietfl

+0

興味深いです。私はそれを試みる! – user3800799

答えて

1

に移動するとき、ディレクティブはあなたのためにすべてを行い持っている方が良いです:

angular.module('directive.loading', []) 

    .directive('loading', ['$http' ,function ($http) 
    { 
     return { 
      restrict: 'A', 
      link: function (scope, elm, attrs) 
      { 
       scope.isLoading = function() { 
        return $http.pendingRequests.length > 0; 
       }; 

       scope.$watch(scope.isLoading, function (v) 
       { 
        if(v){ 
         elm.show(); 
        }else{ 
         elm.hide(); 
        } 
       }); 
      } 
     }; 

    }]); 

このディレクティブを使用すると、あなたがする必要があるすべては、任意の負荷アニメーション要素に「ロード」属性を与えることです:

<div class="loading-spiner-holder" data-loading ><div class="loading-spiner"><img src="..." /></div></div> 
+0

これはかなり良いようです、私はそれを試してみましょう。ありがとう! – user3800799

+1

試しましたか?あなたのために働いていたのですか? –

+0

私は少しこれを調整しなければならなかったが全体的には良い答えだった。 – user3800799

関連する問題