Skip to content
This repository was archived by the owner on Feb 2, 2025. It is now read-only.

Commit 6afabb9

Browse files
committed
Could you please add parameter [callback, resetPaging] when reload data from Ajax source #273
1 parent 43115b9 commit 6afabb9

8 files changed

+73
-17
lines changed

demo/advanced/dataReloadWithAjax.html

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ <h1><i class="fa fa-play"></i>&nbsp;Load/Reload the table data from an Ajax sour
2121
<article class="preview">
2222
<div ng-controller="DataReloadWithAjaxCtrl as showCase">
2323
<p>
24-
<button ng-click="showCase.dtInstance.reloadData()" type="button" class="btn btn-info">
24+
<button ng-click="showCase.reloadData()" type="button" class="btn btn-info">
2525
<i class="fa fa-refresh"></i>&nbsp;Reload data
2626
</button>
2727
<button ng-click="showCase.dtInstance.changeData(showCase.newSource)" type="button" class="btn btn-info">
@@ -36,7 +36,7 @@ <h1><i class="fa fa-play"></i>&nbsp;Load/Reload the table data from an Ajax sour
3636
<div hljs language="html">
3737
<div ng-controller="DataReloadWithAjaxCtrl as showCase">
3838
<p>
39-
<button ng-click="showCase.dtInstance.reloadData()" type="button" class="btn btn-info">
39+
<button ng-click="showCase.reloadData()" type="button" class="btn btn-info">
4040
<i class="fa fa-refresh"></i>&nbsp;Reload data
4141
</button>
4242
<button ng-click="showCase.dtInstance.changeData(showCase.newSource)" type="button" class="btn btn-info">
@@ -63,10 +63,20 @@ <h1><i class="fa fa-play"></i>&nbsp;Load/Reload the table data from an Ajax sour
6363
DTColumnBuilder.newColumn('lastName').withTitle('Last name').notVisible()
6464
];
6565
vm.newSource = 'data1.json';
66+
vm.reloadData = reloadData;
6667

6768
DTInstances.getLast().then(function(dtInstance) {
6869
vm.dtInstance = dtInstance;
6970
});
71+
72+
function reloadData() {
73+
var resetPaging = false;
74+
vm.dtInstance.reloadData(callback, resetPaging);
75+
}
76+
77+
function callback(json) {
78+
console.log(json);
79+
}
7080
}
7181
</div>
7282
</tab>

demo/advanced/dataReloadWithAjax.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,18 @@ function DataReloadWithAjaxCtrl(DTOptionsBuilder, DTColumnBuilder, DTInstances)
1313
DTColumnBuilder.newColumn('lastName').withTitle('Last name').notVisible()
1414
];
1515
vm.newSource = 'data1.json';
16+
vm.reloadData = reloadData;
1617

1718
DTInstances.getLast().then(function(dtInstance) {
1819
vm.dtInstance = dtInstance;
1920
});
21+
22+
function reloadData() {
23+
var resetPaging = false;
24+
vm.dtInstance.reloadData(callback, resetPaging);
25+
}
26+
27+
function callback(json) {
28+
console.log(json);
29+
}
2030
}

demo/advanced/dataReloadWithPromise.html

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ <h1><i class="fa fa-play"></i>&nbsp;Load/Reload the table data from a promise fu
2626
<article class="preview">
2727
<div ng-controller="DataReloadWithPromiseCtrl as showCase">
2828
<p>
29-
<button ng-click="showCase.dtInstance.reloadData()" type="button" class="btn btn-info">
29+
<button ng-click="showCase.reloadData()" type="button" class="btn btn-info">
3030
<i class="fa fa-refresh"></i>&nbsp;Reload data
3131
</button>
3232
<button ng-click="showCase.dtInstance.changeData(showCase.newPromise)" type="button" class="btn btn-info">
@@ -41,7 +41,7 @@ <h1><i class="fa fa-play"></i>&nbsp;Load/Reload the table data from a promise fu
4141
<div hljs language="html">
4242
<div ng-controller="DataReloadWithPromiseCtrl as showCase">
4343
<p>
44-
<button ng-click="showCase.dtInstance.reloadData()" type="button" class="btn btn-info">
44+
<button ng-click="showCase.reloadData()" type="button" class="btn btn-info">
4545
<i class="fa fa-refresh"></i>&nbsp;Reload data
4646
</button>
4747
<button ng-click="showCase.dtInstance.changeData(showCase.newPromise)" type="button" class="btn btn-info">
@@ -68,6 +68,7 @@ <h1><i class="fa fa-play"></i>&nbsp;Load/Reload the table data from a promise fu
6868
DTColumnBuilder.newColumn('lastName').withTitle('Last name').notVisible()
6969
];
7070
vm.newPromise = newPromise;
71+
vm.reloadData = reloadData;
7172

7273
DTInstances.getLast().then(function (dtInstance) {
7374
vm.dtInstance = dtInstance;
@@ -76,6 +77,15 @@ <h1><i class="fa fa-play"></i>&nbsp;Load/Reload the table data from a promise fu
7677
function newPromise() {
7778
return $resource('data1.json').query().$promise;
7879
}
80+
81+
function reloadData() {
82+
var resetPaging = true;
83+
vm.dtInstance.reloadData(callback, resetPaging);
84+
}
85+
86+
function callback(json) {
87+
console.log(json);
88+
}
7989
}
8090
</div>
8191
</tab>

demo/advanced/dataReloadWithPromise.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ function DataReloadWithPromiseCtrl(DTOptionsBuilder, DTColumnBuilder, $resource,
1313
DTColumnBuilder.newColumn('lastName').withTitle('Last name').notVisible()
1414
];
1515
vm.newPromise = newPromise;
16+
vm.reloadData = reloadData;
1617

1718
DTInstances.getLast().then(function (dtInstance) {
1819
vm.dtInstance = dtInstance;
@@ -21,4 +22,13 @@ function DataReloadWithPromiseCtrl(DTOptionsBuilder, DTColumnBuilder, $resource,
2122
function newPromise() {
2223
return $resource('data1.json').query().$promise;
2324
}
25+
26+
function reloadData() {
27+
var resetPaging = true;
28+
vm.dtInstance.reloadData(callback, resetPaging);
29+
}
30+
31+
function callback(json) {
32+
console.log(json);
33+
}
2434
}

dist/angular-datatables.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -477,9 +477,9 @@ function dtInstanceFactory() {
477477
return dtInstance;
478478
}
479479

480-
function reloadData() {
480+
function reloadData(callback, resetPaging) {
481481
/*jshint validthis:true */
482-
this._renderer.reloadData();
482+
this._renderer.reloadData(callback, resetPaging);
483483
}
484484

485485
function changeData(data) {
@@ -960,9 +960,17 @@ function dtPromiseRenderer($q, $timeout, $log, DTRenderer, DTRendererService, DT
960960
return defer.promise;
961961
}
962962

963-
function reloadData() {
963+
function reloadData(callback, resetPaging) {
964+
var previousPage = _oTable && _oTable.page() ? _oTable.page() : 0;
964965
if (angular.isFunction(renderer.options.fnPromise)) {
965-
_resolve(renderer.options.fnPromise, _redrawRows);
966+
_resolve(renderer.options.fnPromise, _redrawRows).then(function(result) {
967+
if (angular.isFunction(callback)) {
968+
callback(result.DataTable.data());
969+
}
970+
if (resetPaging === false) {
971+
result.DataTable.page(previousPage).draw(false);
972+
}
973+
});
966974
} else {
967975
$log.warn('In order to use the reloadData functionality with a Promise renderer, you need to provide a function that returns a promise.');
968976
}
@@ -1091,9 +1099,9 @@ function dtAjaxRenderer($q, $timeout, DTRenderer, DTRendererService, DT_DEFAULT_
10911099
return defer.promise;
10921100
}
10931101

1094-
function reloadData() {
1102+
function reloadData(callback, resetPaging) {
10951103
if (_oTable) {
1096-
_oTable.ajax.reload(null, false);
1104+
_oTable.ajax.reload(callback, resetPaging);
10971105
}
10981106
}
10991107

dist/angular-datatables.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/angular-datatables.instances.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ function dtInstanceFactory() {
7373
return dtInstance;
7474
}
7575

76-
function reloadData() {
76+
function reloadData(callback, resetPaging) {
7777
/*jshint validthis:true */
78-
this._renderer.reloadData();
78+
this._renderer.reloadData(callback, resetPaging);
7979
}
8080

8181
function changeData(data) {

src/angular-datatables.renderer.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -261,9 +261,17 @@ function dtPromiseRenderer($q, $timeout, $log, DTRenderer, DTRendererService, DT
261261
return defer.promise;
262262
}
263263

264-
function reloadData() {
264+
function reloadData(callback, resetPaging) {
265+
var previousPage = _oTable && _oTable.page() ? _oTable.page() : 0;
265266
if (angular.isFunction(renderer.options.fnPromise)) {
266-
_resolve(renderer.options.fnPromise, _redrawRows);
267+
_resolve(renderer.options.fnPromise, _redrawRows).then(function(result) {
268+
if (angular.isFunction(callback)) {
269+
callback(result.DataTable.data());
270+
}
271+
if (resetPaging === false) {
272+
result.DataTable.page(previousPage).draw(false);
273+
}
274+
});
267275
} else {
268276
$log.warn('In order to use the reloadData functionality with a Promise renderer, you need to provide a function that returns a promise.');
269277
}
@@ -391,9 +399,9 @@ function dtAjaxRenderer($q, $timeout, DTRenderer, DTRendererService, DT_DEFAULT_
391399
return defer.promise;
392400
}
393401

394-
function reloadData() {
402+
function reloadData(callback, resetPaging) {
395403
if (_oTable) {
396-
_oTable.ajax.reload(null, false);
404+
_oTable.ajax.reload(callback, resetPaging);
397405
}
398406
}
399407

0 commit comments

Comments
 (0)