diff options
| -rw-r--r-- | src/ng/compile.js | 4 | ||||
| -rwxr-xr-x | test/ng/compileSpec.js | 20 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/ng/compile.js b/src/ng/compile.js index 193dff7a..36c23086 100644 --- a/src/ng/compile.js +++ b/src/ng/compile.js @@ -1711,9 +1711,13 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { linkNode = $compileNode[0]; if (beforeTemplateLinkNode !== beforeTemplateCompileNode) { + var oldClasses = beforeTemplateLinkNode.className; // it was cloned therefore we have to clone as well. linkNode = jqLiteClone(compileNode); replaceWith(linkRootElement, jqLite(beforeTemplateLinkNode), linkNode); + + // Copy in CSS classes from original node + safeAddClass(jqLite(linkNode), oldClasses); } if (afterTemplateNodeLinkFn.transclude) { childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude); diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js index c37461fc..557fb85c 100755 --- a/test/ng/compileSpec.js +++ b/test/ng/compileSpec.js @@ -1128,6 +1128,26 @@ describe('$compile', function() { }); + it('should copy classes from pre-template node into linked element', function() { + module(function() { + directive('test', valueFn({ + templateUrl: 'test.html', + replace: true + })); + }); + inject(function($compile, $templateCache, $rootScope) { + var child; + $templateCache.put('test.html', '<p class="template-class">Hello</p>'); + element = $compile('<div test></div>')($rootScope, function(node) { + node.addClass('clonefn-class'); + }); + $rootScope.$digest(); + expect(element).toHaveClass('template-class'); + expect(element).toHaveClass('clonefn-class'); + }); + }); + + describe('delay compile / linking functions until after template is resolved', function(){ var template; beforeEach(module(function() { |
