This repository was archived by the owner on Apr 12, 2024. It is now read-only.
This repository was archived by the owner on Apr 12, 2024. It is now read-only.
Directive fails to insert/replace html when template root element is table row (tr) #1459
Closed
Description
In an attempt to automate some common table layouts I created a directive that emits the <tr> ...</tr>
, including the table cells.
When this directive is applied, angular throws an exception indicating that the template does not have a single root element (it does).
When replace
is set to false
, this issue does not occur -- but the resulting markup will be invalid.
I suspect that the problem is partially due to the browser "cleaning up" the table HTML and moving unrelated or unknown tags outside of the table -- while preventing table tags from being inserted/replaced at the desired location.
Example
Url: http://jsfiddle.net/phaas/sL9gM/
<div ng-app="tables">
<table>
<row key="x" value="y"></row>
<row key="1" value="2"></row>
<row key="longer" value="very long!"></row>
</table>
</div>
angular.module('tables',[])
.directive('row', function() {
return {
restrict: 'E',
replace: true,
scope: { key: '@', value: '@' },
template: '<tr><td>{{key}}</td><td>{{value}}</td></tr>'
}
});
Stack Trace
Error: Template must have exactly one root element. was: <tr><td>{{key}}</td><td>{{value}}</td></tr>
at applyDirectivesToNode (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:4010:21)
at compileNodes (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:3790:14)
at compileNodes (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:3795:14)
at compile (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:3735:29)
at http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:932:9
at Object.Scope.$eval (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:7808:28)
at Object.Scope.$apply (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:7888:23)
at http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:930:13
at Object.invoke (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:2788:25)
at bootstrap (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js:928:12)
Metadata
Metadata
Assignees
Labels
No labels