@@ -47,7 +47,7 @@ function dataTable($q, $http, DTRendererFactory, DTRendererService, DTPropertyUt
47
47
angular . forEach ( [ 'dtColumns' , 'dtColumnDefs' , 'dtOptions' ] , function ( tableDefField ) {
48
48
$scope [ watchFunction ] . call ( $scope , tableDefField , handleChanges , true ) ;
49
49
} ) ;
50
- DTRendererService . showLoading ( $elem ) ;
50
+ DTRendererService . showLoading ( $elem , $scope ) ;
51
51
ctrl . render ( $elem , ctrl . buildOptionsPromise ( ) , _staticHTML ) ;
52
52
} ;
53
53
}
@@ -411,11 +411,14 @@ function dtColumnDefBuilder(DTColumnBuilder) {
411
411
}
412
412
dtColumnDefBuilder . $inject = [ 'DTColumnBuilder' ] ;
413
413
414
- function dtLoadingTemplate ( ) {
414
+ function dtLoadingTemplate ( $compile , DTDefaultOptions ) {
415
415
return {
416
- html : '<h3 class="dt-loading">Loading...</h3>'
416
+ compileHtml : function ( $scope ) {
417
+ return $compile ( angular . element ( DTDefaultOptions . loadingTemplate ) ) ( $scope ) ;
418
+ }
417
419
} ;
418
420
}
421
+ dtLoadingTemplate . $inject = [ '$compile' , 'DTDefaultOptions' ] ;
419
422
420
423
'use strict' ;
421
424
@@ -600,7 +603,9 @@ angular.module('datatables.options', [])
600
603
601
604
function dtDefaultOptions ( ) {
602
605
var options = {
606
+ loadingTemplate : '<h3 class="dt-loading">Loading...</h3>' ,
603
607
bootstrapOptions : { } ,
608
+ setLoadingTemplate : setLoadingTemplate ,
604
609
setLanguageSource : setLanguageSource ,
605
610
setLanguage : setLanguage ,
606
611
setDisplayLength : setDisplayLength ,
@@ -609,6 +614,16 @@ function dtDefaultOptions() {
609
614
610
615
return options ;
611
616
617
+ /**
618
+ * Set the default loading template
619
+ * @param loadingTemplate the HTML to display when loading the table
620
+ * @returns {DTDefaultOptions } the default option config
621
+ */
622
+ function setLoadingTemplate ( loadingTemplate ) {
623
+ options . loadingTemplate = loadingTemplate ;
624
+ return options ;
625
+ }
626
+
612
627
/**
613
628
* Set the default language source for all datatables
614
629
* @param sLanguageSource the language source
@@ -690,8 +705,8 @@ function dtRendererService(DTLoadingTemplate) {
690
705
} ;
691
706
return rendererService ;
692
707
693
- function showLoading ( $elem ) {
694
- var $loading = angular . element ( DTLoadingTemplate . html ) ;
708
+ function showLoading ( $elem , $scope ) {
709
+ var $loading = angular . element ( DTLoadingTemplate . compileHtml ( $scope ) ) ;
695
710
$elem . after ( $loading ) ;
696
711
$elem . hide ( ) ;
697
712
$loading . show ( ) ;
@@ -767,6 +782,7 @@ function dtDefaultRenderer($q, DTRenderer, DTRendererService, DTInstanceFactory)
767
782
function create ( options ) {
768
783
var _oTable ;
769
784
var _$elem ;
785
+ var _$scope ;
770
786
var renderer = Object . create ( DTRenderer ) ;
771
787
renderer . name = 'DTDefaultRenderer' ;
772
788
renderer . options = options ;
@@ -775,8 +791,9 @@ function dtDefaultRenderer($q, DTRenderer, DTRendererService, DTInstanceFactory)
775
791
renderer . changeData = changeData ;
776
792
renderer . rerender = rerender ;
777
793
778
- function render ( $elem ) {
794
+ function render ( $elem , $scope ) {
779
795
_$elem = $elem ;
796
+ _$scope = $scope ;
780
797
var dtInstance = DTInstanceFactory . newDTInstance ( renderer ) ;
781
798
var result = DTRendererService . hideLoadingAndRenderDataTable ( $elem , renderer . options ) ;
782
799
_oTable = result . DataTable ;
@@ -794,7 +811,7 @@ function dtDefaultRenderer($q, DTRenderer, DTRendererService, DTInstanceFactory)
794
811
795
812
function rerender ( ) {
796
813
_oTable . destroy ( ) ;
797
- DTRendererService . showLoading ( _$elem ) ;
814
+ DTRendererService . showLoading ( _$elem , _$scope ) ;
798
815
render ( _$elem ) ;
799
816
}
800
817
return renderer ;
@@ -874,7 +891,7 @@ function dtNGRenderer($log, $q, $compile, $timeout, DTRenderer, DTRendererServic
874
891
875
892
function rerender ( ) {
876
893
_destroyAndCompile ( ) ;
877
- DTRendererService . showLoading ( _$elem ) ;
894
+ DTRendererService . showLoading ( _$elem , _parentScope ) ;
878
895
$timeout ( function ( ) {
879
896
var result = DTRendererService . hideLoadingAndRenderDataTable ( _$elem , renderer . options ) ;
880
897
_oTable = result . DataTable ;
@@ -963,7 +980,7 @@ function dtPromiseRenderer($q, $timeout, $log, DTRenderer, DTRendererService, DT
963
980
964
981
function rerender ( ) {
965
982
_oTable . destroy ( ) ;
966
- DTRendererService . showLoading ( _$elem ) ;
983
+ DTRendererService . showLoading ( _$elem , _$scope ) ;
967
984
render ( _$elem , _$scope ) ;
968
985
}
969
986
@@ -1105,7 +1122,7 @@ function dtAjaxRenderer($q, $timeout, DTRenderer, DTRendererService, DT_DEFAULT_
1105
1122
options . bDestroy = true ;
1106
1123
if ( _oTable ) {
1107
1124
_oTable . destroy ( ) ;
1108
- DTRendererService . showLoading ( _$elem ) ;
1125
+ DTRendererService . showLoading ( _$elem , _$scope ) ;
1109
1126
// Empty in case of columns change
1110
1127
$elem . empty ( ) ;
1111
1128
}
0 commit comments