@@ -2434,12 +2434,13 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
2434
2434
}
2435
2435
}
2436
2436
2437
- // Initialize bindToController bindings
2437
+ // Initialize controllers
2438
2438
for ( var name in elementControllers ) {
2439
2439
var controllerDirective = controllerDirectives [ name ] ;
2440
2440
var controller = elementControllers [ name ] ;
2441
2441
var bindings = controllerDirective . $$bindings . bindToController ;
2442
2442
2443
+ // Initialize bindToController bindings
2443
2444
if ( controller . identifier && bindings ) {
2444
2445
controller . bindingInfo =
2445
2446
initializeDirectiveBindings ( controllerScope , attrs , controller . instance , bindings , controllerDirective ) ;
@@ -2452,11 +2453,14 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
2452
2453
// If the controller constructor has a return value, overwrite the instance
2453
2454
// from setupControllers
2454
2455
controller . instance = controllerResult ;
2455
- $element . data ( '$' + controllerDirective . name + 'Controller' , controllerResult ) ;
2456
2456
controller . bindingInfo . removeWatches && controller . bindingInfo . removeWatches ( ) ;
2457
2457
controller . bindingInfo =
2458
2458
initializeDirectiveBindings ( controllerScope , attrs , controller . instance , bindings , controllerDirective ) ;
2459
2459
}
2460
+
2461
+ // Store controllers on the $element data
2462
+ // For transclude comment nodes this will be a noop and will be done at transclusion time
2463
+ $element . data ( '$' + controllerDirective . name + 'Controller' , controllerResult ) ;
2460
2464
}
2461
2465
2462
2466
// Bind the required controllers to the controller, if `require` is an object and `bindToController` is truthy
@@ -2623,14 +2627,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
2623
2627
controller = attrs [ directive . name ] ;
2624
2628
}
2625
2629
2626
- var controllerInstance = $controller ( controller , locals , true , directive . controllerAs ) ;
2627
-
2628
- // For directives with element transclusion the element is a comment.
2629
- // In this case .data will not attach any data.
2630
- // Instead, we save the controllers for the element in a local hash and attach to .data
2631
- // later, once we have the actual element.
2632
- elementControllers [ directive . name ] = controllerInstance ;
2633
- $element . data ( '$' + directive . name + 'Controller' , controllerInstance . instance ) ;
2630
+ elementControllers [ directive . name ] = $controller ( controller , locals , true , directive . controllerAs ) ;
2634
2631
}
2635
2632
return elementControllers ;
2636
2633
}
0 commit comments