diff options
| -rw-r--r-- | bower.json | 2 | ||||
| -rw-r--r-- | src/ng/compile.js | 20 | 
2 files changed, 18 insertions, 4 deletions
| @@ -1,7 +1,7 @@  {    "name": "AngularJS",    "devDependencies": { -    "jquery": "git://github.com/components/jquery.git#v1.8.3", +    "jquery": "1.10.2",      "lunr.js": "0.4.0",      "google-code-prettify": "1.0.0",      "components-font-awesome": "3.1.0", diff --git a/src/ng/compile.js b/src/ng/compile.js index d97aeaf6..1b251044 100644 --- a/src/ng/compile.js +++ b/src/ng/compile.js @@ -925,7 +925,14 @@ function $CompileProvider($provide) {              }              optional = optional || value == '?';            } +            value = $element[retrievalMethod]('$' + require + 'Controller'); + +          if ($element[0].nodeType == 8 && $element[0].$$controller) { // Transclusion comment node +            value = value || $element[0].$$controller; +            $element[0].$$controller = null; +          } +            if (!value && !optional) {              throw $compileMinErr('ctreq', "Controller '{0}', required by directive '{1}', can't be found!", require, directiveName);            } @@ -1040,9 +1047,16 @@ function $CompileProvider($provide) {              }              controllerInstance = $controller(controller, locals); -            $element.data( -                '$' + directive.name + 'Controller', -                controllerInstance); + +            // Directives with element transclusion and a controller need to attach controller +            // to the comment node created by the compiler, but jQuery .data doesn't support +            // attaching data to comment nodes so instead we set it directly on the element and +            // remove it after we read it later. +            if ($element[0].nodeType == 8) { // Transclusion comment node +              $element[0].$$controller = controllerInstance; +            } else { +              $element.data('$' + directive.name + 'Controller', controllerInstance); +            }              if (directive.controllerAs) {                locals.$scope[directive.controllerAs] = controllerInstance;              } | 
