2016-08-04 5 views
2

私はangularjs muduleスマートテーブルを使用しています。スマートテーブル - angularJs - ajaxリフレッシュテーブル

私のテーブルにはサーバー側の処理があり、すべてのデータのロードはサーバー上にあります。私はテーブルの外にリフレッシュボタンを持っています。

これは、サーバーを呼び出して手動で呼び出せるようにする機能ですが、マイコンでテーブルの状態を取得する方法がわかりません。

this.callServer = function callServer(tableState) { 

     ctrl.isLoading = true; 

     var pagination = tableState.pagination; 

     var start = pagination.start || 0;  // This is NOT the page number, but the index of item in the list that you want to use to display the table. 
     var number = pagination.number || 10; // Number of entries showed per page. 

     service.getPage(start, number, tableState, ctrl.startDateFilter, 
       ctrl.endDateFilter).then(function (result) { 
      ctrl.displayed = result.data; 
      tableState.pagination.numberOfPages = result.numberOfPages; 
      ctrl.isLoading = false; 
     }); 
    }; 

私の目標は、このような機能を持たせることです。どのようにテーブルの状態を取得できますか?

this.refreshTable = function(){ 
     tableState = getTableState(); 
     ctrl.callServer(tableState); 
    } 

答えて

2

解決策は、コントローラの変数にテーブル状態を設定することです。

callServer関数が呼び出されるたびに、この変数が更新されます。この方法で、私はテーブルをリフレッシュすることができます。

this.tableState = null; 

    this.callServer = function callServer(tableState) { 
     ctrl.tableState = tableState; 
     ... 
    } 

    this.refreshGrid = function(){ 
     ctrl.callServer(ctrl.tableState); 
    } 
0

ディレクティブを作成して作成することもできます。

ビュー

<table st-pipe="productsTableCtrl.getTableData" 
st-table="productsTableCtrl.tableData" refresh-table> 

あなたのコントローラ内部の

指令

app.directive("refreshTable", function(){ 
    return { 
     require:'stTable', 
     restrict: "A", 
     link:function(scope,elem,attr,table){ 
      scope.$on("refreshMyTable", function() { 
       table.pipe(table.tableState()); 
      }); 
    } 
}}); 

クレジットgtaylor4へ4:https://github.com/lorenzofox3/Smart-Table/issues/363#issuecomment-246636293

関連する問題