diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ng/compile.js | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/ng/compile.js b/src/ng/compile.js index 3746bb66..c04d3871 100644 --- a/src/ng/compile.js +++ b/src/ng/compile.js @@ -652,9 +652,14 @@ function $CompileProvider($provide) { } } - if ((directiveValue = directive.template)) { + if (directive.template) { assertNoDuplicate('template', templateDirective, directive, $compileNode); templateDirective = directive; + + directiveValue = (isFunction(directive.template)) + ? directive.template($compileNode, templateAttrs) + : directive.template; + directiveValue = denormalizeTemplate(directiveValue); if (directive.replace) { @@ -977,11 +982,14 @@ function $CompileProvider($provide) { // The fact that we have to copy and patch the directive seems wrong! derivedSyncDirective = extend({}, origAsyncDirective, { controller: null, templateUrl: null, transclude: null, scope: null - }); + }), + templateUrl = (isFunction(origAsyncDirective.templateUrl)) + ? origAsyncDirective.templateUrl($compileNode, tAttrs) + : origAsyncDirective.templateUrl; $compileNode.html(''); - $http.get(origAsyncDirective.templateUrl, {cache: $templateCache}). + $http.get(templateUrl, {cache: $templateCache}). success(function(content) { var compileNode, tempTemplateAttrs, $template; |
