From 9918b748be01266eb10db39d51b4d3098d54ab66 Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Thu, 15 Mar 2012 22:18:06 -0700 Subject: fix(compiler): allow transclusion of root elements Fixed an issue where a directive that uses transclusion (such as ngRepeat) failed to link if it was declared on the root element of the compilation tree. (For example ngView or ngInclude including template where ngRepeat was the top most element). --- test/jqLiteSpec.js | 2 +- test/service/compilerSpec.js | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/jqLiteSpec.js b/test/jqLiteSpec.js index 5cad8c24..417b912c 100644 --- a/test/jqLiteSpec.js +++ b/test/jqLiteSpec.js @@ -39,7 +39,7 @@ describe('jqLite', function() { it('should be jqLite when jqLiteMode is on, otherwise jQuery', function() { - expect(jqLite).toBe(_jqLiteMode ? jqLiteWrap : _jQuery); + expect(jqLite).toBe(_jqLiteMode ? JQLite : _jQuery); }); diff --git a/test/service/compilerSpec.js b/test/service/compilerSpec.js index 28c91492..f977294b 100644 --- a/test/service/compilerSpec.js +++ b/test/service/compilerSpec.js @@ -1751,5 +1751,27 @@ describe('$compile', function() { }); }); + + it('should support transcluded element on root content', function() { + var comment; + module(function($compileProvider) { + $compileProvider.directive('transclude', valueFn({ + transclude: 'element', + compile: function(element, attr, linker) { + return function(scope, element, attr) { + comment = element; + }; + } + })); + }); + inject(function($compile, $rootScope) { + var element = jqLite('
before
after
').contents(); + expect(element.length).toEqual(3); + expect(nodeName_(element[1])).toBe('DIV'); + $compile(element)($rootScope); + expect(nodeName_(element[1])).toBe('#comment'); + expect(nodeName_(comment)).toBe('#comment'); + }); + }); }); }); -- cgit v1.2.3