diff options
| author | Igor Minar | 2013-08-20 16:08:24 -0700 | 
|---|---|---|
| committer | Igor Minar | 2013-08-20 23:31:38 -0700 | 
| commit | bf79bd4194eca2118ae1c492c08dbd217f5ae810 (patch) | |
| tree | deca3f1e700eba811a226917fd18a6d994b33215 /src | |
| parent | 5c4ffb36deee18743beb149ceae4d63d5b1ae8d9 (diff) | |
| download | angular.js-bf79bd4194eca2118ae1c492c08dbd217f5ae810.tar.bz2 | |
fix(ngTransclude): make the transclusion available to parent post-link
previously the translusion was appended the the ngTranslude element via
$evalAsync which makes the transluded dom unavailable to parent
post-linking functions. By appending translusion in linking phase,
post-linking functions will be able to access it.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ng/directive/ngTransclude.js | 20 | 
1 files changed, 11 insertions, 9 deletions
| diff --git a/src/ng/directive/ngTransclude.js b/src/ng/directive/ngTransclude.js index 668f8033..0b9b919d 100644 --- a/src/ng/directive/ngTransclude.js +++ b/src/ng/directive/ngTransclude.js @@ -49,14 +49,16 @@   *   */  var ngTranscludeDirective = ngDirective({ -  controller: ['$transclude', '$element', '$scope', function($transclude, $element, $scope) { -    // use evalAsync so that we don't process transclusion before directives on the parent element even when the -    // transclusion replaces the current element. (we can't use priority here because that applies only to compile fns -    // and not controllers -    $scope.$evalAsync(function() { -      $transclude(function(clone) { -        $element.append(clone); -      }); +  controller: ['$transclude', function($transclude) { +    // remember the transclusion fn but call it during linking so that we don't process transclusion before directives on +    // the parent element even when the transclusion replaces the current element. (we can't use priority here because +    // that applies only to compile fns and not controllers +    this.$transclude = $transclude; +  }], + +  link: function($scope, $element, $attrs, controller) { +    controller.$transclude(function(clone) { +      $element.append(clone);      }); -  }] +  }  }); | 
