@@ -2421,12 +2421,13 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
2421
2421
}
2422
2422
}
2423
2423
2424
- // Initialize bindToController bindings
2424
+ // Initialize controllers
2425
2425
for ( var name in elementControllers ) {
2426
2426
var controllerDirective = controllerDirectives [ name ] ;
2427
2427
var controller = elementControllers [ name ] ;
2428
2428
var bindings = controllerDirective . $$bindings . bindToController ;
2429
2429
2430
+ // Initialize bindToController bindings
2430
2431
if ( controller . identifier && bindings ) {
2431
2432
controller . bindingInfo =
2432
2433
initializeDirectiveBindings ( controllerScope , attrs , controller . instance , bindings , controllerDirective ) ;
@@ -2439,11 +2440,14 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
2439
2440
// If the controller constructor has a return value, overwrite the instance
2440
2441
// from setupControllers
2441
2442
controller . instance = controllerResult ;
2442
- $element . data ( '$' + controllerDirective . name + 'Controller' , controllerResult ) ;
2443
2443
controller . bindingInfo . removeWatches && controller . bindingInfo . removeWatches ( ) ;
2444
2444
controller . bindingInfo =
2445
2445
initializeDirectiveBindings ( controllerScope , attrs , controller . instance , bindings , controllerDirective ) ;
2446
2446
}
2447
+
2448
+ // Store controllers on the $element data
2449
+ // For transclude comment nodes this will be a noop and will be done at transclusion time
2450
+ $element . data ( '$' + controllerDirective . name + 'Controller' , controllerResult ) ;
2447
2451
}
2448
2452
2449
2453
// Bind the required controllers to the controller, if `require` is an object and `bindToController` is truthy
@@ -2610,14 +2614,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
2610
2614
controller = attrs [ directive . name ] ;
2611
2615
}
2612
2616
2613
- var controllerInstance = $controller ( controller , locals , true , directive . controllerAs ) ;
2614
-
2615
- // For directives with element transclusion the element is a comment.
2616
- // In this case .data will not attach any data.
2617
- // Instead, we save the controllers for the element in a local hash and attach to .data
2618
- // later, once we have the actual element.
2619
- elementControllers [ directive . name ] = controllerInstance ;
2620
- $element . data ( '$' + directive . name + 'Controller' , controllerInstance . instance ) ;
2617
+ elementControllers [ directive . name ] = $controller ( controller , locals , true , directive . controllerAs ) ;
2621
2618
}
2622
2619
return elementControllers ;
2623
2620
}
0 commit comments