【问题标题】:Push data into object AngularJS将数据推送到对象 AngularJS
【发布时间】:2014-07-21 07:03:40
【问题描述】:

我有几个可以点击的复选框。对于您单击的每个复选框,连接到该复选框的 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 中?

【问题讨论】:

  • 为什么需要将其作为对象推送?
  • 要在对象中存储数据,您需要有密钥。这个密钥可以是随机的吗?
  • 为简单起见,最好使用数组而不是对象。
  • @VolodymyrBilyachat:因为我想把它像一个对象一样发送到我的后端,而不是一个数组。
  • @hasH:我使用的后端只能使用来自 Angular 的数据对象,而不是数组,这就是为什么我想像对象一样发送它。

标签: javascript arrays angularjs object


【解决方案1】:

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

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

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

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

Object {5: 5, 6: 6} 

这确实是值的存储方式。

如果你改用数组,你在服务器端的工作会大大简化。

【讨论】:

    【解决方案2】:

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

    <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);
        };
    

    【讨论】:

    【解决方案3】:

    虽然没有完全回答您关于“推送”的问题 - 由于您无法推送到对象,您可以在使用 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。

    但是,请确保您确实“应该”将其作为对象发送到后端。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 2016-12-06
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多