如何从多行和多列的表格中获取选定的复选框并作为后响应发送

时间:2018-12-21 08:24:27

标签: javascript arrays angularjs json

我有一个帐户对帐单表(从响应中映射),其中有日期和另外两个带有复选框的列。

查看(HTML)

<table>
  <tr>
    <th>Statement Period</th>
    <th>Mail Address</th>
    <th>Email Address</th>
  </tr>
  <tr>
    <td>Oct 2018</td>
    <td><input type="checkbox"></td>
    <td><input type="checkbox"></td>
  </tr>
  <tr>
    <td>Nov 2018</td>
    <td><input type="checkbox"></td>
    <td><input type="checkbox"></td>
  </tr>
  <tr>
    <td>Dec 2018</td>
    <td><input type="checkbox"></td>
    <td><input type="checkbox"></td>
  </tr>
</table>
<button ng-click="getSelectedData">Proceed</button<

基于$ index(数组ID),我希望从每行中选择一个复选框,并像下面的JSON格式那样以数组形式发送;

注意:选中的复选框代表“ Y”,另一个代表“ N”

JSON数组(预期响应)

[
  {
    "isEmail": "Y",
    "isMail": "N",
    "month": "12",
    "year": "2018"
  },
  {
    "isEmail": "Y",
    "isMail": "N",
    "month": "10",
    "year": "2018"
  }
]

我想发送带有以上参数(如电子邮件地址和物理地址)的上述格式的POST响应。我已经尝试过for循环,但是似乎运气没了。

控制器JS

$scope.sendStatementList = function(i) {
  var listLenght = $scope.accountStatementList.lenght;

  for (var i = 0; i < listLenght; i++) {
    var selectItem = $scope.accountStatementList[i];

    return selectItem;
  }

  console.log(selectItem);
};

我尝试了多种方法,但是仍然很茫然,对正确的方法一无所知。任何帮助将不胜感激。

P.S。这是我的查询的键符(demo)。

1 个答案:

答案 0 :(得分:1)

尝试一下:

 https://next.plnkr.co/edit/6GLQtI85vPE0V98x

只需创建另一个与您现有数组映射的数组即可:

 $scope.finalResponse = $scope.statementListRespone.map(function(st){
    return { 
      "month" : $filter('date')(st, "MM") , 
      "year" : $filter('date')(st, "yyyy"), 
      "isMail": "N", 
      "isEmail": "N"};
  });

并通过绑定到另一个数组来更新标记,例如:

<input type="checkbox" id="email-{{$index}}" name="email" ng-modal="email" 
    ng-model="finalResponse[$index]['isEmail']" 
    ng-true-value="'Y'" ng-false-value="'N'"> 

因此,在单击按钮时:您只需发送您的 finalResponse 数组。