2017-02-21 5 views
0

ng-tableを作成し、その合計値を適用する方法を理解しようとしています。私がやっているほとんど見せている例がある表示されます - ではなく、正確にかつtotlaは設定れることは決してありません -ページングを使用したサーバーからのAngular ng-tableのロード


$scope.tableParams = new NgTableParams({page: 1, count: 25}, 
{ 
    counts: [], 
    getData: function(params) 
    if (CompaniesView.ViewInitialized) 
    return CompaniesView.RetrieveCompanies($scope, $http, function() 
    { 
     params.total($scope.RequestFilter.TotalCompanies); 
     return $scope.TableParams.data; 
     }); 
    } 
}); 

マイRetrieveCompanies機能は、彼にデータを取得 - と呼びます完了時のコールバック関数。私は印象の下でこの時点で私はparams.totalを設定することができますが、動作していません。私は、jquery API操作を直接実行していることを除いて、例が似ていることが分かります。なぜこれがうまくいかないのか分かりません。私はいつでも合計を設定することでテーブルの改ページコントロールが更新されると思っていたでしょうが、detData呼び出し内で行う必要があるようです。しかし、非同期呼び出しを行っている場合は、非同期が完了するまでデータを持たないので、呼び出しの合計をどのようにすることができますか?すなわち、 getData呼び出しがすでに終了していることを意味します。

おそらくここにいくつかのコンセプトがありませんが、jqueryやangularについては専門家ではありません。

ピーター

更新: RetieveCompanies機能


RetrieveCompanies: function (scope, http,callback) 
    { 
     scope.IsLoading = true; 

     var Data = 
     { 
      AuthoirzationType: TokenRetrieval.SessionAuth, 
      SessionId: activeSession 
     }; 

     var tokenRequest = 

     { 
      params: Data 
     }; 

     performVeilabilityTokenRetrieval(http, tokenRequest, 
     function (response) 
     { 
      if (true) 
      { 
       if (!response.HasError) 
       { 
        scope.RequestFilter.State = scope.selectedState.Value 
        scope.RequestFilter.regionsearch = scope.selectedRegion.id; 
        scope.RequestFilter.checkadminStaff = scope.selectedAdmin.value; 

        //tableParams 
        scope.RequestFilter.Page = scope.tableParams.page(); 
        scope.RequestFilter.PageCount = scope.tableParams.count(); 

        var config = 
        { 
         headers: 
         { 
          Authorization: 'Bearer ' + response.RequestToken 
         }, 
         params: scope.RequestFilter 
        } 

        http.get(CompaniesView.Companies_api_urls.loadCompaniesRequest, config) 
        .then(     
         function (response) 
         {        
          scope.RequestFilter.TotalCompanies = response.data.companieslistTotal; 
          scope.TableParams.data = response.data.companies; 
          if (callback != null) callback();        
         },      
         function (data, status, headers, config) //error 
         { 
          scope.IsLoading = false; 
         } 
        ); 
       } 
       else 
       { 
        scope.request.requestToken = null; 
        //CreateExpenseView.PrepareRESTResults(data.RestResults); 
       } 
      } 
      else 
      { 
       scope.request.requestToken = null; 
       scope.request.error = data.replace(/\"/g, ""); 
      } 
     }); 
    } 

+0

RetrieveCompanies機能を表示できますか? – digit

答えて

0

[OK]を。最終的に何が間違っているかを見つけましng-table getData操作では、約束が返される必要があります。私の機能は延期された約束として構成されていませんでした。そして、これを実現すると、約束を返すためにデータを取得するために必要な変更を加えました。 1つの大きなポイント - いつ私の呼び出しをラップしたか - doneで完了し、getDataはその時点で(約束から)動作しています。これらの変更がいったん実行されると、改ページ(合計)操作が機能しました。

Peter

関連する問題