如何在数据更新后调用angular数据表分页刷新回调?
How invoke angular datatable pagination refresh callback after data update?
我有 angular 数据表配置,工作正常。我的配置看起来像
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
});
来自控制器?什么对象和什么方法更新分页?
好的,我终于找到了解决方案。首先,在标记中添加 dt-instance:
<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
});
});
};
在配置中使用ajax回调:
....withOption('ajax', ajaxCallback ).....
在doFilter/doSearch中:
$scope.doFilter = function () {
console.log(vm.dtInstance);
vm.dtInstance.changeData(ajaxCallback);
};
$scope.filter 在 init 中填充,在回调中添加 $resource 和 start 和长度(偏移量)的公共参数。此外,过滤器包含来自通过 ng-model
.
绑定的过滤器 html 输入的值
我有 angular 数据表配置,工作正常。我的配置看起来像
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
});
来自控制器?什么对象和什么方法更新分页?
好的,我终于找到了解决方案。首先,在标记中添加 dt-instance:
<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
});
});
};
在配置中使用ajax回调:
....withOption('ajax', ajaxCallback ).....
在doFilter/doSearch中:
$scope.doFilter = function () {
console.log(vm.dtInstance);
vm.dtInstance.changeData(ajaxCallback);
};
$scope.filter 在 init 中填充,在回调中添加 $resource 和 start 和长度(偏移量)的公共参数。此外,过滤器包含来自通过 ng-model
.