我有几个可以点击的复选框。对于您单击的每个复选框,连接到复选框的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,而不是数组。如何将数据“推送”到对象?
答案 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;将此作为对象发送到后端。