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() { | 
