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 | |
| 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')
| -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;  | 
