AngularJS创建动态模板

时间:2016-08-09 13:16:50

标签: javascript html angularjs

我目前正在尝试创建某种动态模板,该模板从两个单独的服务中获取数据和元信息。最终结果应该是一个表格,显示具有正确标签的数据。我的计划是创建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页面中构建。

工作流程应该看起来像这样:

  1. 获取元数据 - &gt;获取属性的名称
  2. 在“HTML”中设置属性的名称以调用正确的属性
  3. 使用
  4. 之前定义的属性获取实际数据
  5. 创建表格

1 个答案:

答案 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和属性匹配。