将数据推送到对象AngularJS中

Push data into object AngularJS

本文关键字:对象 AngularJS 数据      更新时间:2023-09-26

我有几个复选框,你可以点击。对于您单击的每个复选框,与该复选框相连的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到我的后端。不过,我想把这个Id发送到Object中,而不是数组中。我如何像上面那样将数据"推送"到对象中?

不能将数据推入对象。把对象看作键值对的集合。对于要存储到对象中的每个值,都需要一个键。这就是为什么我问你的服务器端对象。

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

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

这段代码肯定会将键存储在对象中,但是看看这个。

Object {5: 5, 6: 6} 

这就是值的实际存储方式。

如果你使用数组,你的工作将被简化了很多在服务器端。

我不知道为什么你需要,但一个可能的解决方案是为复选框添加名称

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

init复选框到对象

    $scope.checkboxes = {};

then modify your function

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

虽然不能完全回答你关于"push "的问题-因为你不能push到对象,你可以在发送它之前使用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。

然而,确保你真的"应该"把它作为一个对象发送到后端。