我目前正在尝试创建某种动态模板,该模板从两个单独的服务中获取数据和元信息。最终结果应该是一个表格,显示具有正确标签的数据。我的计划是创建HTML
- 具有不同基本设计的模板,例如3,4或5列的表格。然后匹配的控制器应从服务中获取元数据,该服务应该返回一个属性为id
的数组及其name
应该显示在表中。到目前为止这么好,但现在是棘手的部分:
第二个服务获取模板的匹配数据和元数据的id
以及实际数据的id
匹配,以便您可以正确匹配它们。
以下是关于plunkr的代码:Link
主要问题是以下代码:
<tr ng-repeat="person in persons">
<td>{{person.name}}</td>
<td>{{person.age}}</td>
<td>{{person.postal}}</td>
</tr>
在<td>
- 标签之间,数据不会被动态获取,而是静态的。我不想明确说明我的属性是如何被调用的,而是使用来自元服务的获取数据来了解我的属性是如何被调用的。
因此,最后模板应该获取属性的名称以及匹配的数据。你们对我有什么好主意如何解决这个问题?
修改
为了使事情更清楚:
目前,<td>
标记之间的数据是静态获取的,因为术语{{person.name}}
代表硬编码。让我们假设数据的结构变化,并且会有country
- 属性而不是postal
属性。保持不变的模板仍尝试从person.postal
而非person.country
获取数据。因此undefined
甚至是错误都是后果
为了防止这种情况,应该从元服务中获取属性的名称,并在HTML
页面中构建。
工作流程应该看起来像这样:
答案 0 :(得分:2)
http://jsfiddle.net/Lt024p9h/1/
<div ng-controller="MyCtrl">
<table border="1">
<tr ng-repeat="person in persons">
<td ng-repeat="attr in query.attribs">
{{person[attr.id]}}
</td>
</tr>
</table>
</div>
这是怎么回事?
因此,如果获得要显示的属性,然后将对象用作associative array,我们会做什么。
这确实要求attr.id
和属性匹配。