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 /test/ng/compileSpec.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 'test/ng/compileSpec.js')
| -rw-r--r-- | test/ng/compileSpec.js | 57 | 
1 files changed, 57 insertions, 0 deletions
diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js index 6f56c6e6..f81199cb 100644 --- a/test/ng/compileSpec.js +++ b/test/ng/compileSpec.js @@ -647,6 +647,32 @@ describe('$compile', function() {        }); +      describe('template as function', function() { + +        beforeEach(module(function() { +          directive('myDirective', valueFn({ +            replace: true, +            template: function($element, $attrs) { +              expect($element.text()).toBe('original content'); +              expect($attrs.myDirective).toBe('some value'); +              return '<div id="templateContent">template content</div>'; +            }, +            compile: function($element, $attrs) { +              expect($element.text()).toBe('template content'); +              expect($attrs.id).toBe('templateContent'); +            } +          })); +        })); + + +        it('should evaluate `template` when defined as fn and use returned string as template', inject( +            function($compile, $rootScope) { +          element = $compile('<div my-directive="some value">original content<div>')($rootScope); +          expect(element.text()).toEqual('template content'); +        })); +      }); + +        describe('templateUrl', function() {          beforeEach(module( @@ -1215,6 +1241,37 @@ describe('$compile', function() {        }); +      describe('template as function', function() { + +        beforeEach(module(function() { +          directive('myDirective', valueFn({ +            replace: true, +            templateUrl: function($element, $attrs) { +              expect($element.text()).toBe('original content'); +              expect($attrs.myDirective).toBe('some value'); +              return 'my-directive.html'; +            }, +            compile: function($element, $attrs) { +              expect($element.text()).toBe('template content'); +              expect($attrs.id).toBe('templateContent'); +            } +          })); +        })); + + +        it('should evaluate `templateUrl` when defined as fn and use returned value as url', inject( +            function($compile, $rootScope, $templateCache) { +          $templateCache.put('my-directive.html', '<div id="templateContent">template content</span>'); +          element = $compile('<div my-directive="some value">original content<div>')($rootScope); +          expect(element.text()).toEqual(''); + +          $rootScope.$digest(); + +          expect(element.text()).toEqual('template content'); +        })); +      }); + +        describe('scope', function() {          var iscope;  | 
