2016-08-04 67 views
2

我正在使用angularjs mudule智能表。智能表 - angularJs - 阿賈克斯刷新表

我的表具有服務器端處理,並且所有數據加載位於服務器上。我想在表格外面有一個刷新按鈕。

這是打電話給服務器的功能,我希望能夠手動調用它,但我無法弄清楚如何檢索我的控制器中的表狀態。

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