File tree 2 files changed +19
-0
lines changed
2 files changed +19
-0
lines changed Original file line number Diff line number Diff line change @@ -844,6 +844,7 @@ function $CompileProvider($provide) {
844
844
var srcAttr = src . $attr ,
845
845
dstAttr = dst . $attr ,
846
846
$element = dst . $$element ;
847
+
847
848
// reapply the old attributes to the new element
848
849
forEach ( dst , function ( value , key ) {
849
850
if ( key . charAt ( 0 ) != '$' ) {
@@ -853,10 +854,12 @@ function $CompileProvider($provide) {
853
854
dst . $set ( key , value , true , srcAttr [ key ] ) ;
854
855
}
855
856
} ) ;
857
+
856
858
// copy the new attributes on the old attrs object
857
859
forEach ( src , function ( value , key ) {
858
860
if ( key == 'class' ) {
859
861
safeAddClass ( $element , value ) ;
862
+ dst . class = ( dst . class ? dst . class + ' ' : '' ) + value ;
860
863
} else if ( key == 'style' ) {
861
864
$element . attr ( 'style' , $element . attr ( 'style' ) + ';' + value ) ;
862
865
} else if ( key . charAt ( 0 ) != '$' && ! dst . hasOwnProperty ( key ) ) {
Original file line number Diff line number Diff line change @@ -378,6 +378,14 @@ describe('$compile', function() {
378
378
expect ( element ) . toBe ( attr . $$element ) ;
379
379
}
380
380
} ) ) ;
381
+ $compileProvider . directive ( 'replaceWithInterpolatedClass' , valueFn ( {
382
+ replace : true ,
383
+ template : '<div class="class_{{1+1}}">Replace with interpolated class!</div>' ,
384
+ compile : function ( element , attr ) {
385
+ attr . $set ( 'compiled' , 'COMPILED' ) ;
386
+ expect ( element ) . toBe ( attr . $$element ) ;
387
+ }
388
+ } ) ) ;
381
389
} ) ) ;
382
390
383
391
@@ -456,6 +464,14 @@ describe('$compile', function() {
456
464
} ) ) ;
457
465
458
466
467
+ it ( 'should handle interpolated css from replacing directive' , inject (
468
+ function ( $compile , $rootScope ) {
469
+ element = $compile ( '<div replace-with-interpolated-class></div>' ) ( $rootScope ) ;
470
+ $rootScope . $digest ( ) ;
471
+ expect ( element ) . toHaveClass ( 'class_2' ) ;
472
+ } ) ) ;
473
+
474
+
459
475
it ( 'should merge interpolated css class' , inject ( function ( $compile , $rootScope ) {
460
476
element = $compile ( '<div class="one {{cls}} three" replace></div>' ) ( $rootScope ) ;
461
477
You can’t perform that action at this time.
0 commit comments