This repository was archived by the owner on Apr 12, 2024. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +19
-0
lines changed Expand file tree Collapse file tree 2 files changed +19
-0
lines changed Original file line number Diff line number Diff line change @@ -865,6 +865,7 @@ function $CompileProvider($provide) {
865865 var srcAttr = src . $attr ,
866866 dstAttr = dst . $attr ,
867867 $element = dst . $$element ;
868+
868869 // reapply the old attributes to the new element
869870 forEach ( dst , function ( value , key ) {
870871 if ( key . charAt ( 0 ) != '$' ) {
@@ -874,10 +875,12 @@ function $CompileProvider($provide) {
874875 dst . $set ( key , value , true , srcAttr [ key ] ) ;
875876 }
876877 } ) ;
878+
877879 // copy the new attributes on the old attrs object
878880 forEach ( src , function ( value , key ) {
879881 if ( key == 'class' ) {
880882 safeAddClass ( $element , value ) ;
883+ dst [ 'class' ] = ( dst [ 'class' ] ? dst [ 'class' ] + ' ' : '' ) + value ;
881884 } else if ( key == 'style' ) {
882885 $element . attr ( 'style' , $element . attr ( 'style' ) + ';' + value ) ;
883886 } else if ( key . charAt ( 0 ) != '$' && ! dst . hasOwnProperty ( key ) ) {
Original file line number Diff line number Diff line change @@ -388,6 +388,14 @@ describe('$compile', function() {
388388 expect ( element ) . toBe ( attr . $$element ) ;
389389 }
390390 } ) ) ;
391+ directive ( 'replaceWithInterpolatedClass' , valueFn ( {
392+ replace : true ,
393+ template : '<div class="class_{{1+1}}">Replace with interpolated class!</div>' ,
394+ compile : function ( element , attr ) {
395+ attr . $set ( 'compiled' , 'COMPILED' ) ;
396+ expect ( element ) . toBe ( attr . $$element ) ;
397+ }
398+ } ) ) ;
391399 } ) ) ;
392400
393401
@@ -466,6 +474,14 @@ describe('$compile', function() {
466474 } ) ) ;
467475
468476
477+ it ( 'should handle interpolated css from replacing directive' , inject (
478+ function ( $compile , $rootScope ) {
479+ element = $compile ( '<div replace-with-interpolated-class></div>' ) ( $rootScope ) ;
480+ $rootScope . $digest ( ) ;
481+ expect ( element ) . toHaveClass ( 'class_2' ) ;
482+ } ) ) ;
483+
484+
469485 it ( 'should merge interpolated css class' , inject ( function ( $compile , $rootScope ) {
470486 element = $compile ( '<div class="one {{cls}} three" replace></div>' ) ( $rootScope ) ;
471487
You can’t perform that action at this time.
0 commit comments