@@ -1513,7 +1513,7 @@ function dtPromiseRenderer($timeout, DTRenderer, DTRendererService) {
1513
1513
dtPromiseRenderer . $inject = [ '$timeout' , 'DTRenderer' , 'DTRendererService' ] ;
1514
1514
1515
1515
/* @ngInject */
1516
- function dtAjaxRenderer ( DTRenderer , DTRendererService , DT_DEFAULT_OPTIONS ) {
1516
+ function dtAjaxRenderer ( $timeout , DTRenderer , DTRendererService , DT_DEFAULT_OPTIONS ) {
1517
1517
/**
1518
1518
* Renderer for displaying with Ajax
1519
1519
* @param options the options
@@ -1565,12 +1565,26 @@ function dtAjaxRenderer(DTRenderer, DTRendererService, DT_DEFAULT_OPTIONS) {
1565
1565
var ajaxUrl = options . sAjaxSource || options . ajax . url || options . ajax ;
1566
1566
oTable . ajax . url ( ajaxUrl ) . load ( ) ;
1567
1567
} else {
1568
- oTable = DTRendererService . renderDataTableAndEmitEvent ( $elem , options , $scope ) ;
1568
+ if ( _shouldDeferRender ( options ) ) {
1569
+ $timeout ( function ( ) {
1570
+ oTable = DTRendererService . renderDataTableAndEmitEvent ( $elem , options , $scope ) ;
1571
+ } , 0 , false ) ;
1572
+ } else {
1573
+ oTable = DTRendererService . renderDataTableAndEmitEvent ( $elem , options , $scope ) ;
1574
+ }
1575
+ }
1576
+ }
1577
+ // See https://github.com/l-lin/angular-datatables/issues/147
1578
+ function _shouldDeferRender ( options ) {
1579
+ if ( angular . isDefined ( options ) && angular . isDefined ( options . sDom ) ) {
1580
+ // S for scroller plugin
1581
+ return options . sDom . indexOf ( 'S' ) >= 0 ;
1569
1582
}
1583
+ return false ;
1570
1584
}
1571
1585
}
1572
1586
}
1573
- dtAjaxRenderer . $inject = [ 'DTRenderer' , 'DTRendererService' , 'DT_DEFAULT_OPTIONS' ] ;
1587
+ dtAjaxRenderer . $inject = [ '$timeout' , ' DTRenderer', 'DTRendererService' , 'DT_DEFAULT_OPTIONS' ] ;
1574
1588
1575
1589
/* @ngInject */
1576
1590
function dtRendererFactory ( DTDefaultRenderer , DTNGRenderer , DTPromiseRenderer , DTAjaxRenderer ) {
0 commit comments