Angular.js:表中列的动态长度

时间:2016-06-10 13:26:37

标签: angularjs html-table

我是Angular的新手并且一直试图创建一个动态表。

用户输入他想要的列号,然后他可以根据需要向每个列添加任意数量的行。

我在每列的末尾提供了一个“添加”按钮,用于向该特定列添加新行。

我的代码看起来有点像这样:

<table>

  <tr>
    <th ng-repeat="x in setno"> SET {{x.number}}</th>
    </tr>
  
  <tr ng-repeat="z in selected">
    <td> </td>
    </tr>
  
  <tr>
    <td ng-repeat="x in setno"> 
       <button ng-click="selected.push({})"> add </button>
    </td>
    </tr>
  
</table>

其中, setno 是包含数字的列表:

$scope.setno[{id:"a", number:"1"},{id:"b", number:"2"},...];

选择具有类似的结构。

问题在于,当我点击任意列的“ add ”按钮时,新行将添加到所有列。

我想要的是,只有一个新行被添加到单击了“ add ”按钮的行。

如何知道点击了哪个“添加”按钮?

1 个答案:

答案 0 :(得分:0)

  

我怎么知道谁&#34;添加&#34;按钮已被点击?

您需要访问目标转发器的当前$index 。现在,我不确定您尝试定位的是哪个,但您可以将ng-repeater $index存储为另一个变量,以便使用以下内容从内置中继器进行访问语法:

<!-- outer loop -->
<div ng-repeat="(idxA, item) in items)">

    <!-- inner loop -->
    <div ng-repeat"(idxB, obj) in item.objs">

         <ul>
             <!-- another inner loop -->
             <li ng-repeat="li in obj.pts">

在上面的代码中,idxA将与外部循环$index相同,idxB是内部循环$index,因此上。然后,您只需将索引(例如idxAidxB)传递给您的方法。

资源: