我正在尝试在Angular JS
中动态填充/创建表格。我创建了一个指令ns-row
来表示我的表中的行。我使用ng-repeat
指令遍历我的自定义指令ns-row
中的所有数据,如下所示:
<tbody>
<ns-row ng-repeat="row in data" row="row"></ns-row>
</tbody>
我在自定义指令replace:true
中使用ns-row
将其替换为有效html table row - tr
。我在指令模板中使用了one root element
:
<tr><td> {{row.id}} </td> <td> {{row.name}} </td> </tr>
而不是在控制台中显示输出Angular
跟踪长错误消息。
但是,如果我从replace:true
中移除了directive
,则错误不再存在,但会得到意外的输出。
这是Plunker
答案 0 :(得分:3)
这是一个AngularJS问题(#1459) 有一个公关来解决它,但我认为它不会被合并(#3647)。
有两种方法可以修复它而不需要使用AngularJS:
replace: true
使用tr
包裹您的div
(导致HTML无效)
<div>
<tr><td> {{row.id}} </td><td> {{row.name}} </td></tr>
</div>
答案 1 :(得分:2)
Angular无法使用非标准元素而不是tr
。要解决您的问题,您可以使用属性指令并在tr
中放置ng-repeat
元素。
<tbody>
<tr ng-repeat="row in data" ns-row="row"></tr>
</tbody>
并在你的指令中:
return {
restrict : "A",
scope: {
row : '=nsRow'
},
template : "<td>{{row.id}}</td><td>{{row.name}}</td>"
}
Here is your updated Plunker. 有关此错误的更多信息here。