javascript - AngularJS 创建动态模板

标签 javascript html angularjs

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

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

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

最佳答案

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/

相关文章:

javascript - 更新angularjs中的现有元素ng-repeat列表?

php - 如果用户名不可用,如何禁用表单提交

html - 无法获得水平菜单栏

javascript - 当我使用异步/等待功能时,Angular UI 路由器不处理解析功能?

javascript - 身份保持膜代理的用例是什么?

html - Rails 和 WiceGrid : HTML escape

angularjs - 使用 Protractor 可以进行数据驱动测试吗?

javascript - 如何从 Node 中的 require 等命令将 babel 选项传递给 @babel/register

javascript - 如何在 <td> 标签下使用 Accordion? Angular 9

javascript - JQuery 中 .hide() .show() 的淡入淡出效果