@@ -1513,7 +1513,7 @@ function dtPromiseRenderer($timeout, DTRenderer, DTRendererService) {
15131513dtPromiseRenderer . $inject = [ '$timeout' , 'DTRenderer' , 'DTRendererService' ] ;
15141514
15151515/* @ngInject */
1516- function dtAjaxRenderer ( DTRenderer , DTRendererService , DT_DEFAULT_OPTIONS ) {
1516+ function dtAjaxRenderer ( $timeout , DTRenderer , DTRendererService , DT_DEFAULT_OPTIONS ) {
15171517 /**
15181518 * Renderer for displaying with Ajax
15191519 * @param options the options
@@ -1565,12 +1565,26 @@ function dtAjaxRenderer(DTRenderer, DTRendererService, DT_DEFAULT_OPTIONS) {
15651565 var ajaxUrl = options . sAjaxSource || options . ajax . url || options . ajax ;
15661566 oTable . ajax . url ( ajaxUrl ) . load ( ) ;
15671567 } 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 ;
15691582 }
1583+ return false ;
15701584 }
15711585 }
15721586}
1573- dtAjaxRenderer . $inject = [ 'DTRenderer' , 'DTRendererService' , 'DT_DEFAULT_OPTIONS' ] ;
1587+ dtAjaxRenderer . $inject = [ '$timeout' , ' DTRenderer', 'DTRendererService' , 'DT_DEFAULT_OPTIONS' ] ;
15741588
15751589/* @ngInject */
15761590function dtRendererFactory ( DTDefaultRenderer , DTNGRenderer , DTPromiseRenderer , DTAjaxRenderer ) {
0 commit comments