From 31c450bcee53d0a3827b7e0a611e9013b2496506 Mon Sep 17 00:00:00 2001
From: Caitlin Potter
Date: Mon, 2 Dec 2013 15:05:21 -0500
Subject: fix($compile) support templates with table content root nodes
If the first element in a template is a
, | , | , or |
tag,
the HTML compiler will ensure that the template is wrapped in a
element so that the table content is not discarded.
Closes #2848
Closes #1459
Closes #3647
Closes #3241
---
test/ng/compileSpec.js | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 97 insertions(+)
(limited to 'test/ng/compileSpec.js')
diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js
index 60b1024b..e9ab15e4 100755
--- a/test/ng/compileSpec.js
+++ b/test/ng/compileSpec.js
@@ -517,6 +517,22 @@ describe('$compile', function() {
expect(element).toBe(attr.$$element);
}
}));
+ directive('replaceWithTr', valueFn({
+ replace: true,
+ template: '| TR |
'
+ }));
+ directive('replaceWithTd', valueFn({
+ replace: true,
+ template: 'TD | '
+ }));
+ directive('replaceWithTh', valueFn({
+ replace: true,
+ template: 'TH | '
+ }));
+ directive('replaceWithTbody', valueFn({
+ replace: true,
+ template: '| TD |
'
+ }));
}));
@@ -680,6 +696,34 @@ describe('$compile', function() {
}).not.toThrow();
});
});
+
+ it('should support templates with root tags', inject(function($compile, $rootScope) {
+ expect(function() {
+ element = $compile('')($rootScope);
+ }).not.toThrow();
+ expect(nodeName_(element)).toMatch(/tr/i);
+ }));
+
+ it('should support templates with root | tags', inject(function($compile, $rootScope) {
+ expect(function() {
+ element = $compile('')($rootScope);
+ }).not.toThrow();
+ expect(nodeName_(element)).toMatch(/td/i);
+ }));
+
+ it('should support templates with root | tags', inject(function($compile, $rootScope) {
+ expect(function() {
+ element = $compile('')($rootScope);
+ }).not.toThrow();
+ expect(nodeName_(element)).toMatch(/th/i);
+ }));
+
+ it('should support templates with root |
tags', inject(function($compile, $rootScope) {
+ expect(function() {
+ element = $compile('')($rootScope);
+ }).not.toThrow();
+ expect(nodeName_(element)).toMatch(/tbody/i);
+ }));
});
@@ -776,6 +820,23 @@ describe('$compile', function() {
replace: true,
template: 'Hello, {{name}}!'
}));
+
+ directive('replaceWithTr', valueFn({
+ replace: true,
+ templateUrl: 'tr.html'
+ }));
+ directive('replaceWithTd', valueFn({
+ replace: true,
+ templateUrl: 'td.html'
+ }));
+ directive('replaceWithTh', valueFn({
+ replace: true,
+ templateUrl: 'th.html'
+ }));
+ directive('replaceWithTbody', valueFn({
+ replace: true,
+ templateUrl: 'tbody.html'
+ }));
}
));
@@ -1411,6 +1472,42 @@ describe('$compile', function() {
expect(element.html()).toContain('i = 1');
});
});
+
+ it('should support templates with root tags', inject(function($compile, $rootScope, $templateCache) {
+ $templateCache.put('tr.html', '
| TR |
');
+ expect(function() {
+ element = $compile('')($rootScope);
+ }).not.toThrow();
+ $rootScope.$digest();
+ expect(nodeName_(element)).toMatch(/tr/i);
+ }));
+
+ it('should support templates with root tags', inject(function($compile, $rootScope, $templateCache) {
+ $templateCache.put('td.html', ' | TD | ');
+ expect(function() {
+ element = $compile('')($rootScope);
+ }).not.toThrow();
+ $rootScope.$digest();
+ expect(nodeName_(element)).toMatch(/td/i);
+ }));
+
+ it('should support templates with root tags', inject(function($compile, $rootScope, $templateCache) {
+ $templateCache.put('th.html', ' | TH | ');
+ expect(function() {
+ element = $compile('')($rootScope);
+ }).not.toThrow();
+ $rootScope.$digest();
+ expect(nodeName_(element)).toMatch(/th/i);
+ }));
+
+ it('should support templates with root tags', inject(function($compile, $rootScope, $templateCache) {
+ $templateCache.put('tbody.html', '| TD |
');
+ expect(function() {
+ element = $compile('')($rootScope);
+ }).not.toThrow();
+ $rootScope.$digest();
+ expect(nodeName_(element)).toMatch(/tbody/i);
+ }));
});
--
cgit v1.2.3