将数据推送到对象AngularJS

时间:2014-07-21 07:03:41

标签: javascript arrays angularjs object

我有几个可以点击的复选框。对于您单击的每个复选框,连接到复选框的ID将被推送到数组中:

HTML:

<tr ng-repeat="info in test">
  <td>{{info.stracka}}</td><td>{{info.tid}}</td>
  <td><input type="checkbox" id="{{info.id}}" class="checkboxfisk" ng-click="testa(info.id)">
</tr>

控制器:

$scope.testa = function(id) {   //När vi klickar i de olika checkboxarna, så fyllas arrayen med dessa
        $scope.checkboxes.push(id);
        console.log($scope.checkboxes);
    };

在此之后,我应该将包含ID的数组发送到我的后端。但是,我想在Object中发送此Id,而不是数组。如何将数据“推送”到对象?

3 个答案:

答案 0 :(得分:1)

您无法将数据推送到对象中。将对象视为键值对的集合。对于要存储到对象中的每个值,都需要一个键。这就是我询问你的服务器端对象的原因。

因此,在您的情况下,在将数据存储到对象之前,我需要一个密钥。所以,我必须这样做

var testa = function(id){
     checkbox[id]=id;
}

此代码肯定会将您的密钥存储在对象中,但请查看此内容。

Object {5: 5, 6: 6} 

这就是值的存储方式。

如果您使用数组,那么您的工作将在服务器端进行简化。

答案 1 :(得分:0)

我不确定你为什么需要这个,但一个可能的解决方案是 在复选框中添加名称

<input type="checkbox" id="{{info.id}}" class="checkboxfisk" ng-click="testa(info.id, 'UNIQUE_NAME')">

初始化对象复选框

    $scope.checkboxes = {};

然后修改你的功能

$scope.testa = function(id, name) {  
        $scope.checkboxes[name] = id;
        console.log($scope.checkboxes);
    };

答案 2 :(得分:0)

虽然没有完全回答你关于&#34;推动&#34;的问题。 - 由于无法推送到对象,因此可以在使用this发送数组之前将其转换为对象。

function toObject(arr) {
  var rv = {};
  for (var i = 0; i < arr.length; ++i)
    if (arr[i] !== undefined) rv[i] = arr[i];
  return rv;
}

在您的示例中,您将执行类似

的操作
$scope.checkboxesObject = toObject($scope.checkboxes);

然后发送这个新的$ scope.checkboxesObject。

然而,确保你真的是&#34;假设&#34;将此作为对象发送到后端。