如何使用Angularjs按顺序输出不同元素的数组

Posted

技术标签:

【中文标题】如何使用Angularjs按顺序输出不同元素的数组【英文标题】:How to output an array of different elements in a sequence using Angularjs 【发布时间】:2020-05-30 11:35:25 【问题描述】:

我有生成 html 表格行描述的代码,如下所示:

  [
    element: 'th', content: 'Header 1',
    element: 'td', content: 'data 1',
    element: 'td', content: 'data 2',
  ]

我想用 angularjs 输出这些,比如

<tr>
  <td ng-repeat="item in row" >item.content</td>
</tr>

除了我不知道这如何处理应该是&lt;th&gt; 的元素?

(例如,Vuejs 有 &lt;td v-is="item.element"&gt;item.content&lt;/td&gt;,但我正在使用 angularjs 应用程序,所以给出这个例子是为了帮助 Vuejs 人理解我的需要。)

【问题讨论】:

【参考方案1】:

感谢Clint's answer,一个适用于表格的变体是:

创建一个删除自身的指令(!)

angular.module('theapp').directive('repeatSection', function () 
  return  restrict: 'A', replace: true, link(scope, el)  el.remove();  ;
);

使用&lt;td&gt;元素包装逻辑:

<table>
 ...
 <tbody>
   <tr ng-repeat="row in rows">

     <td repeat-section ng-repeat-start="cells in row"></td>
     <th ng-if="cell.element === 'th'">cell.content</th>
     <td ng-if="cell.element === 'td'">cell.content</td>
     <td repeat-section ng-repeat-end></td>

   </tr>
 </tbody>
</table>
repeat-section 指令删除作为ng-repeat-start 一部分创建的td 元素。 我们需要在这里使用&lt;td&gt;——如果你使用&lt;div&gt;&lt;repeat-section&gt;,这些元素会被清空(至少在Firefox中),因为&lt;tr&gt;只能包含&lt;td&gt;&lt;th&gt; . 这适用于我的使用(表格单元格),但不是通用解决方案 - 正如您将看到的,我必须包含每个可能的元素之一;在一般情况下会变得混乱。

【讨论】:

以上是关于如何使用Angularjs按顺序输出不同元素的数组的主要内容,如果未能解决你的问题,请参考以下文章

定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出

C语言编程问题:给数组中的元素按顺序编号

如何将一个数组的值按逆序重新存放于原数组中,并输出。例如:原来顺序为3,6,5,4,9改为9,4?

如何按各自的顺序从数组中选择每个元素? (jQuery,JS)

087-把PHP数组中的元素按随机顺序重新排列shuffle

如何获得基于 2 个不同数组的输出