@@ -408,7 +408,8 @@ angular.module('datatables.instances', ['datatables.util'])
408
408
. factory ( 'DTInstanceFactory' , dtInstanceFactory ) ;
409
409
410
410
/* @ngInject */
411
- function dtInstances ( $q , failzQ ) {
411
+ function dtInstances ( $q , failzQ , $timeout ) {
412
+ var TIME_BEFORE_CLEANING = 1000 ;
412
413
var _instances = { } ;
413
414
var _lastInstance = { } ;
414
415
// Promise for fetching the last DT instance
@@ -428,7 +429,9 @@ function dtInstances($q, failzQ) {
428
429
dtInstance . DataTable = result . DataTable ;
429
430
dtInstance . dataTable = result . dataTable ;
430
431
432
+ //_instances[dtInstance.id] = dtInstance;
431
433
_instances [ dtInstance . id ] = dtInstance ;
434
+ _cleanInstances ( ) ;
432
435
_lastInstance = dtInstance ;
433
436
if ( _deferLastDTInstances ) {
434
437
_deferLastDTInstances . resolve ( _lastInstance ) ;
@@ -474,8 +477,22 @@ function dtInstances($q, failzQ) {
474
477
} ) ;
475
478
return defer . promise ;
476
479
}
480
+
481
+ function _cleanInstances ( ) {
482
+ $timeout ( function ( ) {
483
+ var newInstances = { } ;
484
+ for ( var attr in _instances ) {
485
+ if ( _instances . hasOwnProperty ( attr ) ) {
486
+ if ( $ . fn . DataTable . isDataTable ( _instances [ attr ] . id ) ) {
487
+ newInstances [ attr ] = _instances [ attr ] ;
488
+ }
489
+ }
490
+ }
491
+ _instances = newInstances ;
492
+ } , TIME_BEFORE_CLEANING ) ;
493
+ }
477
494
}
478
- dtInstances . $inject = [ '$q' , 'failzQ' ] ;
495
+ dtInstances . $inject = [ '$q' , 'failzQ' , '$timeout' ] ;
479
496
480
497
function dtInstanceFactory ( ) {
481
498
var DTInstance = {
0 commit comments