【发布时间】:2013-11-23 04:34:35
【问题描述】:
<tr ng-repeat="rows in DATA1">
<INEEDSOMETAG ng-repeat="(key,part) in rows" ng-switch on="key">
<td ng-switch-when="ABCD" ng-repeat="piece in part">{{piece}}</td>
<td ng-switch-default>{{part}}</td>
</INEEDSOMETAG>
</tr>
这些信息是从一个 json 对象中解析出来的,其中一个“部分”是另一个对象,我需要遍历它,但将它们显示为另一个“td”。
如果可能的话,显然一种方法是提供某种动态标签('INEEDSOMETAG')
下面的json:
{obj1: {
ABCD:{
x:'x',
y:'y'
},
a:'a',
b:'b',
c:'c',
d:'d',
},
obj2:{
ABCD:{
z:'x',
f:'y'
},
a:'a',
b:'b',
c:'c',
d:'d',
},
}
添加了一个 jsfiddle:http://jsfiddle.net/kDF5L/1/
【问题讨论】:
-
无论你在 Angular 文档和教程中看到什么,都会使用自定义标签。看来您没有太多阅读文档。当您尝试使用与现在完全相同的标记时会发生什么?在 jsfiddle.net 或 plunker 中提供一个演示
-
我明白你在说什么,但是它无法在 'tr' 和 'td' 属性之间工作,因为在 'tr' 中只允许使用 'td' 而其他标签被浏览器忽略正确的? -附言我在过去一周通读了文档,但仍然没有解决方案
-
OK...非常简单的指令将您的
td作为模板传递,并使用replace:true。我实际上想知道...浏览器讨厌表格中的无效嵌套 -
我会将此切换/重复逻辑放入控制器中。添加一个方法,返回所有单元格以显示当前行,并迭代此方法的结果。控制器将进行切换,并返回相应的列表。
-
您真正需要的只是 td 中继器数据的过滤器。如果您清理演示,使其不会破坏分钟页面加载,并且数据适合表达式......会有所帮助
标签: angularjs html-table angularjs-ng-repeat cell ng-switch