aboutsummaryrefslogtreecommitdiffstats
path: root/src/ng/compile.js
diff options
context:
space:
mode:
authorLuis Ramón López2013-02-21 21:56:40 +0100
committerIgor Minar2013-02-27 17:57:59 -0800
commiteb53423a41136fcda0c5e711f2d104952080354b (patch)
treef86eca5ac62d80a8f48af8da9ae26c58d194c477 /src/ng/compile.js
parent5e18a15fb01d2e81adda68503754289fa9655082 (diff)
downloadangular.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.js14
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;