2016-08-04 12 views
2

Ich benutze die angularjs mudule smart table.Smart table - eckigJs - ajax refresh table

Meine Tabelle hat serverseitige Verarbeitung und alle Daten laden befindet sich auf dem Server. Ich möchte einen Aktualisierungsknopf außerhalb des Tisches haben.

Dies ist die Funktion, die einen Aufruf an den Server und ich möchte es manuell aufrufen können, aber ich kann nicht herausfinden, wie der Tabellenstatus in meinem Controller abgerufen werden.

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; 
     }); 
    }; 

Mein Ziel ist es, eine Funktion wie diese zu haben, Wie kann ich den Tabellenstatus erhalten?

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

Antwort

2

Die Lösung besteht darin, den Tabellenstatus in eine Controllervariable zu stellen.

Jedes Mal, wenn die CallServer-Funktion aufgerufen wird, wird diese Variable aktualisiert. Auf diese Weise kann ich den Tisch auffrischen.

this.tableState = null; 

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

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

Sie können auch eine Direktive dafür erstellen.

Ansicht

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

Innerhalb der Controller

Richtlinie

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

Credits gtaylor4 4: https://github.com/lorenzofox3/Smart-Table/issues/363#issuecomment-246636293