@@ -2434,12 +2434,13 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
24342434 }
24352435 }
24362436
2437- // Initialize bindToController bindings
2437+ // Initialize controllers
24382438 for ( var name in elementControllers ) {
24392439 var controllerDirective = controllerDirectives [ name ] ;
24402440 var controller = elementControllers [ name ] ;
24412441 var bindings = controllerDirective . $$bindings . bindToController ;
24422442
2443+ // Initialize bindToController bindings
24432444 if ( controller . identifier && bindings ) {
24442445 controller . bindingInfo =
24452446 initializeDirectiveBindings ( controllerScope , attrs , controller . instance , bindings , controllerDirective ) ;
@@ -2452,11 +2453,14 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
24522453 // If the controller constructor has a return value, overwrite the instance
24532454 // from setupControllers
24542455 controller . instance = controllerResult ;
2455- $element . data ( '$' + controllerDirective . name + 'Controller' , controllerResult ) ;
24562456 controller . bindingInfo . removeWatches && controller . bindingInfo . removeWatches ( ) ;
24572457 controller . bindingInfo =
24582458 initializeDirectiveBindings ( controllerScope , attrs , controller . instance , bindings , controllerDirective ) ;
24592459 }
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 ) ;
24602464 }
24612465
24622466 // Bind the required controllers to the controller, if `require` is an object and `bindToController` is truthy
@@ -2623,14 +2627,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
26232627 controller = attrs [ directive . name ] ;
26242628 }
26252629
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 ) ;
26342631 }
26352632 return elementControllers ;
26362633 }
0 commit comments