fix($compile): compile replace directives in external template

Passing DOMNode#childNodes to compileNodes when compiling remote
template, so that directives with replace:true can be compiled.
The previous version used jqLite#contents which returned collection
that was not updated during the compilation.

Closes #1859
This commit is contained in:
danilsomsikov
2013-01-22 16:59:09 +01:00
committed by Igor Minar
parent 7ddbde8c1c
commit 398691beb3
2 changed files with 32 additions and 3 deletions

View File

@@ -702,6 +702,10 @@ describe('$compile', function() {
}
}));
directive('replace', valueFn({
replace: true,
template: '<span>Hello, {{name}}!</span>'
}));
}
));
@@ -817,6 +821,31 @@ describe('$compile', function() {
));
it('should compile template when replacing element in another template',
inject(function($compile, $templateCache, $rootScope) {
$templateCache.put('hello.html', '<div replace></div>');
$rootScope.name = 'Elvis';
element = $compile('<div><b class="hello"></b></div>')($rootScope);
$rootScope.$digest();
expect(sortedHtml(element)).
toEqual('<div><b class="hello"><span replace="">Hello, Elvis!</span></b></div>');
}));
it('should compile template when replacing root element',
inject(function($compile, $templateCache, $rootScope) {
$rootScope.name = 'Elvis';
element = $compile('<div replace></div>')($rootScope);
$rootScope.$digest();
expect(sortedHtml(element)).
toEqual('<span replace="">Hello, Elvis!</span>');
}));
it('should resolve widgets after cloning in append mode', function() {
module(function($exceptionHandlerProvider) {
$exceptionHandlerProvider.mode('log');