我目前正在尝试创建某种动态模板,它从两个单独的服务获取数据和元信息。最终结果应该是一个显示带有正确标签的数据的表格。我的计划是创建 HTML
- 具有不同基本设计的模板,例如具有 3、4 或 5 列的表格。然后匹配的 Controller 应该从服务中获取元数据,该服务应该返回一个带有 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>
之间-tags 数据不是动态获取的,而是静态获取的。我不想明确说明如何调用我的属性,而是使用从元服务获取的数据来了解如何调用我的属性。
所以最终模板应该获取属性的名称以及匹配的数据。你们有什么好主意告诉我如何解决这个问题吗?
编辑
为了让事情更清楚一点:
目前数据在<td>
之间标签是静态获取的,因为术语 {{person.name}}
站在那里硬编码。假设数据结构变化并且有 country
- 属性而不是 postal
一。保持不变的模板仍然尝试从person.postal
获取数据。而不是来自 person.country
。所以undefined
甚至会出现错误。
为了防止这种情况,属性的名称应该从元服务中获取并构建在 HTML
中。页。
工作流程应该看起来像这样:
- 获取元数据 --> 获取属性名称
- 设置“HTML”内的属性名称以调用正确的属性
- 使用之前定义的属性获取实际数据
- 创建表
最佳答案
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>
对啊,这是怎么回事?
所以按照你的 fiddle ,如果获取你想要显示的属性然后使用该对象作为 associative array 我们该怎么做.
这确实要求 attr.id
和属性匹配。
关于javascript - AngularJS 创建动态模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38851880/