@@ -5187,6 +5187,83 @@ describe('$compile', function() {
51875187 expect ( element . attr ( 'test' ) ) . toBe ( 'Misko' ) ;
51885188 } ) ) ;
51895189
5190+ it ( 'should bind after digest but not before when after overridden attribute' , inject ( function ( $compile , $rootScope ) {
5191+ $rootScope . name = "Misko" ;
5192+ element = $compile ( '<span test="123" ng-attr-test="{{name}}"></span>' ) ( $rootScope ) ;
5193+ expect ( element . attr ( 'test' ) ) . toBe ( '123' ) ;
5194+ $rootScope . $digest ( ) ;
5195+ expect ( element . attr ( 'test' ) ) . toBe ( 'Misko' ) ;
5196+ } ) ) ;
5197+
5198+ it ( 'should bind after digest but not before when before overridden attribute' , inject ( function ( $compile , $rootScope ) {
5199+ $rootScope . name = "Misko" ;
5200+ element = $compile ( '<span ng-attr-test="{{name}}" test="123"></span>' ) ( $rootScope ) ;
5201+ expect ( element . attr ( 'test' ) ) . toBe ( '123' ) ;
5202+ $rootScope . $digest ( ) ;
5203+ expect ( element . attr ( 'test' ) ) . toBe ( 'Misko' ) ;
5204+ } ) ) ;
5205+
5206+
5207+ describe ( 'in directive' , function ( ) {
5208+ beforeEach ( module ( function ( ) {
5209+ directive ( 'syncTest' , function ( log ) {
5210+ return {
5211+ link : {
5212+ pre : function ( s , e , attr ) { log ( attr . test ) ; } ,
5213+ post : function ( s , e , attr ) { log ( attr . test ) ; }
5214+ }
5215+ } ;
5216+ } ) ;
5217+ directive ( 'asyncTest' , function ( log ) {
5218+ return {
5219+ templateUrl : 'async.html' ,
5220+ link : {
5221+ pre : function ( s , e , attr ) { log ( attr . test ) ; } ,
5222+ post : function ( s , e , attr ) { log ( attr . test ) ; }
5223+ }
5224+ } ;
5225+ } ) ;
5226+ } ) ) ;
5227+
5228+ beforeEach ( inject ( function ( $templateCache ) {
5229+ $templateCache . put ( 'async.html' , '<h1>Test</h1>' ) ;
5230+ } ) ) ;
5231+
5232+ it ( 'should provide post-digest value in synchronous directive link functions when after overridden attribute' ,
5233+ inject ( function ( log , $rootScope , $compile ) {
5234+ $rootScope . test = "TEST" ;
5235+ element = $compile ( '<div sync-test test="123" ng-attr-test="{{test}}"></div>' ) ( $rootScope ) ;
5236+ expect ( element . attr ( 'test' ) ) . toBe ( '123' ) ;
5237+ expect ( log . toArray ( ) ) . toEqual ( [ 'TEST' , 'TEST' ] ) ;
5238+ } ) ) ;
5239+
5240+ it ( 'should provide post-digest value in synchronous directive link functions when before overridden attribute' ,
5241+ inject ( function ( log , $rootScope , $compile ) {
5242+ $rootScope . test = "TEST" ;
5243+ element = $compile ( '<div sync-test ng-attr-test="{{test}}" test="123"></div>' ) ( $rootScope ) ;
5244+ expect ( element . attr ( 'test' ) ) . toBe ( '123' ) ;
5245+ expect ( log . toArray ( ) ) . toEqual ( [ 'TEST' , 'TEST' ] ) ;
5246+ } ) ) ;
5247+
5248+
5249+ it ( 'should provide post-digest value in asynchronous directive link functions when after overridden attribute' ,
5250+ inject ( function ( log , $rootScope , $compile ) {
5251+ $rootScope . test = "TEST" ;
5252+ element = $compile ( '<div async-test test="123" ng-attr-test="{{test}}"></div>' ) ( $rootScope ) ;
5253+ expect ( element . attr ( 'test' ) ) . toBe ( '123' ) ;
5254+ $rootScope . $digest ( ) ;
5255+ expect ( log . toArray ( ) ) . toEqual ( [ 'TEST' , 'TEST' ] ) ;
5256+ } ) ) ;
5257+
5258+ it ( 'should provide post-digest value in asynchronous directive link functions when before overridden attribute' ,
5259+ inject ( function ( log , $rootScope , $compile ) {
5260+ $rootScope . test = "TEST" ;
5261+ element = $compile ( '<div async-test ng-attr-test="{{test}}" test="123"></div>' ) ( $rootScope ) ;
5262+ expect ( element . attr ( 'test' ) ) . toBe ( '123' ) ;
5263+ $rootScope . $digest ( ) ;
5264+ expect ( log . toArray ( ) ) . toEqual ( [ 'TEST' , 'TEST' ] ) ;
5265+ } ) ) ;
5266+ } ) ;
51905267
51915268 it ( 'should work with different prefixes' , inject ( function ( $compile , $rootScope ) {
51925269 $rootScope . name = "Misko" ;
0 commit comments