@@ -886,6 +886,17 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
886
886
}
887
887
} ;
888
888
889
+
890
+ function safeAddClass ( $element , className ) {
891
+ try {
892
+ $element . addClass ( className ) ;
893
+ } catch ( e ) {
894
+ // ignore, since it means that we are trying to set class on
895
+ // SVG element, where class name is read-only.
896
+ }
897
+ }
898
+
899
+
889
900
var startSymbol = $interpolate . startSymbol ( ) ,
890
901
endSymbol = $interpolate . endSymbol ( ) ,
891
902
denormalizeTemplate = ( startSymbol == '{{' || endSymbol == '}}' )
@@ -896,11 +907,14 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
896
907
NG_ATTR_BINDING = / ^ n g A t t r [ A - Z ] / ;
897
908
898
909
compile . $$addBindingInfo = debugInfoEnabled ? function $$addBindingInfo ( element , binding ) {
899
- element
900
- . addClass ( 'ng-binding' )
901
- . data ( '$binding' ,
902
- ( element . data ( '$binding' ) || [ ] ) . concat ( binding . expressions || [ binding ] )
903
- ) ;
910
+ safeAddClass ( element , 'ng-binding' ) ;
911
+ element . data ( '$binding' , ( element . data ( '$binding' ) || [ ] ) . concat ( binding . expressions || [ binding ] ) ) ;
912
+ } : noop ;
913
+
914
+ compile . $$addScopeInfo = debugInfoEnabled ? function $$addScopeInfo ( element , scope , isolated , noTemplate ) {
915
+ safeAddClass ( jqLite ( element ) , isolated ? 'ng-isolate-scope' : 'ng-scope' ) ;
916
+ var dataName = isolated ? ( noTemplate ? '$isolateScopeNoTemplate' : '$isolateScope' ) : '$scope' ;
917
+ element . data ? element . data ( dataName , scope ) : jqLite . data ( element , dataName , scope ) ;
904
918
} : noop ;
905
919
906
920
return compile ;
@@ -924,9 +938,9 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
924
938
var compositeLinkFn =
925
939
compileNodes ( $compileNodes , transcludeFn , $compileNodes ,
926
940
maxPriority , ignoreDirective , previousCompileContext ) ;
927
- safeAddClass ( $compileNodes , 'ng-scope' ) ;
928
- var namespace = null ;
941
+
929
942
return function publicLinkFn ( scope , cloneConnectFn , transcludeControllers , parentBoundTranscludeFn , futureParentElement ) {
943
+ var namespace = null ;
930
944
assertArg ( scope , 'scope' ) ;
931
945
if ( ! namespace ) {
932
946
namespace = detectNamespaceForChildElements ( futureParentElement ) ;
@@ -949,7 +963,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
949
963
}
950
964
}
951
965
952
- $linkNode . data ( '$scope' , scope ) ;
966
+ compile . $$addScopeInfo ( $linkNode , scope ) ;
953
967
954
968
if ( cloneConnectFn ) cloneConnectFn ( $linkNode , scope ) ;
955
969
if ( compositeLinkFn ) compositeLinkFn ( scope , $linkNode , $linkNode , parentBoundTranscludeFn ) ;
@@ -967,15 +981,6 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
967
981
}
968
982
}
969
983
970
- function safeAddClass ( $element , className ) {
971
- try {
972
- $element . addClass ( className ) ;
973
- } catch ( e ) {
974
- // ignore, since it means that we are trying to set class on
975
- // SVG element, where class name is read-only.
976
- }
977
- }
978
-
979
984
/**
980
985
* Compile function matches each node in nodeList against the directives. Once all directives
981
986
* for a particular node are collected their compile functions are executed. The compile
@@ -1008,10 +1013,6 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
1008
1013
null , [ ] , [ ] , previousCompileContext )
1009
1014
: null ;
1010
1015
1011
- if ( nodeLinkFn && nodeLinkFn . scope ) {
1012
- safeAddClass ( attrs . $$element , 'ng-scope' ) ;
1013
- }
1014
-
1015
1016
childLinkFn = ( nodeLinkFn && nodeLinkFn . terminal ||
1016
1017
! ( childNodes = nodeList [ i ] . childNodes ) ||
1017
1018
! childNodes . length )
@@ -1062,7 +1063,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
1062
1063
if ( nodeLinkFn ) {
1063
1064
if ( nodeLinkFn . scope ) {
1064
1065
childScope = scope . $new ( ) ;
1065
- jqLite . data ( node , '$scope' , childScope ) ;
1066
+ compile . $$addScopeInfo ( node , childScope ) ;
1066
1067
} else {
1067
1068
childScope = scope ;
1068
1069
}
@@ -1563,14 +1564,8 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
1563
1564
1564
1565
isolateScope = scope . $new ( true ) ;
1565
1566
1566
- if ( templateDirective && ( templateDirective === newIsolateScopeDirective ||
1567
- templateDirective === newIsolateScopeDirective . $$originalDirective ) ) {
1568
- $element . data ( '$isolateScope' , isolateScope ) ;
1569
- } else {
1570
- $element . data ( '$isolateScopeNoTemplate' , isolateScope ) ;
1571
- }
1572
-
1573
-
1567
+ compile . $$addScopeInfo ( $element , isolateScope , true , ! ( templateDirective && ( templateDirective === newIsolateScopeDirective ||
1568
+ templateDirective === newIsolateScopeDirective . $$originalDirective ) ) ) ;
1574
1569
1575
1570
safeAddClass ( $element , 'ng-isolate-scope' ) ;
1576
1571
0 commit comments