diff options
| author | Luis Ramón López | 2013-02-21 21:56:40 +0100 |
|---|---|---|
| committer | Igor Minar | 2013-02-27 17:57:59 -0800 |
| commit | eb53423a41136fcda0c5e711f2d104952080354b (patch) | |
| tree | f86eca5ac62d80a8f48af8da9ae26c58d194c477 /src/ng/compile.js | |
| parent | 5e18a15fb01d2e81adda68503754289fa9655082 (diff) | |
| download | angular.js-eb53423a41136fcda0c5e711f2d104952080354b.tar.bz2 | |
feat($compile): support for dynamic template generation
`template` and `templateUrl` properties can now be optionally defined
via a function. This allows templates to be dynamically generated on
the fly.
Diffstat (limited to 'src/ng/compile.js')
| -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; |
