2015-11-04 58 views
1

我有角度數據配置工作正常。我的配置看起來像數據更新後如何調用角度數據表分頁刷新回調?

vm.dtOptions = DTOptionsBuilder.newOptions(). 
      withPaginationType('full_numbers'). 
      //withOption('ajax', { 
      // url: 'rest/get/'+entityName, 
      // type: 'GET' 
      //}). 
      withOption('serverSide', true). 
      withOption('ajax', function(data, callback, settings) { 
        EntityManager.get({entity:entityName,action:'get',start:data.start,length:data.length}).$promise.then(function(response) { 
        console.log('response'); 
        console.log(response); 
        vm.objectList = response.data; 

        callback({ 
         recordsTotal: response.recordsTotal, 
         recordsFiltered: response.recordsFiltered, 
         data: response.data 
        }); 

       }); 
      }). 
      withDataProp('data'). 
      withOption('processing', true). 
      withOption('bFilter', false). 
      withOption('bSort', false). 
      withOption("aaSorting", []). 
      withDisplayLength(10); 

但我也有過濾功能,更新數據和recordsTotal,因此,分頁應該被重新渲染 - 最後一個按鈕號必須進行修改。但它不會發生。有沒有辦法撥打電話

callback({ 
     recordsTotal: response.recordsTotal, 
     recordsFiltered: response.recordsFiltered, 
     data: response.data 
}); 

from controller?什麼對象和什麼方法更新分頁?

回答

2

好吧,最後我找到了解決方案。首先,在標記添加DT-實例:

<div ng-controller="DataTableController as listTable" ng-init="init('informsystem')"> 
    <table datatable="" dt-options="listTable.dtOptions" dt-instance="listTable.dtInstance" class="row-border hover"> 

在控制器聲明dtInstance變量和初始化它。此外,讓所有Ajax回調邏輯分離的功能,並傳遞它dtoptions和過濾器:

var vm = this; 
vm.dtInstance = {}; //MUST BE INITIALIZED! DON'T FORGET vm.(this) before varName 

     var ajaxCallback = function(data, callback, settings) { 
      $scope.filter.start = data.start; 
      $scope.filter.length = data.length; 
      console.log($scope.filter); 
      EntityManager.get($scope.filter).$promise.then(function(response) { 
       console.log('response'); 
       console.log(response); 
       vm.objectList = response.data; 

       callback({ 
        recordsTotal: response.recordsTotal, 
        recordsFiltered: response.recordsFiltered, 
        data: response.data 
       }); 

      }); 
     }; 

使用ajaxCallback在配置:

....withOption('ajax', ajaxCallback)..... 
中的doFilter/doSearch

$scope.doFilter = function() { 
      console.log(vm.dtInstance); 
      vm.dtInstance.changeData(ajaxCallback); 
     }; 

$ scope.filter在init中填充,使用公共參數$ resource,並在回調中添加start和length(offset)。另外,過濾器包含來自通過ng-model綁定的過濾器html輸入的值。

相關問題