aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ng/compile.js4
-rwxr-xr-xtest/ng/compileSpec.js20
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() {