@@ -5187,6 +5187,83 @@ describe('$compile', function() {
5187
5187
expect ( element . attr ( 'test' ) ) . toBe ( 'Misko' ) ;
5188
5188
} ) ) ;
5189
5189
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
+ } ) ;
5190
5267
5191
5268
it ( 'should work with different prefixes' , inject ( function ( $compile , $rootScope ) {
5192
5269
$rootScope . name = "Misko" ;
0 commit comments