从复选框循环中循环通过json对象

时间:2014-11-21 13:11:20

标签: javascript json angularjs

我有一个json对象,通过ng-repeat中的复选框加载。它列出了可能的服务,并且我试图访问在提交表单时已经检查过的服务。

我正在加载复选框:

<label style="margin-right:10px" ng-repeat="item in dsServces">
    <input
        type="checkbox"
        name="selectedFruits"
        value="{{item.DefaultServiceID}}"
        ng-model="expense.dsService[item.DefaultServiceName]"
    > {{item.DefaultServiceName}}
</label>

我可以看到通过测试来构建费用:

{{ expense.dsService }}

返回(当选择一对时)

{"Email":true,"Backups":true}

但是我无法解决如何循环,所以它只是说服务名称,所以我可以将它们添加到客户。

在后端,我有:

$scope.expense = {
    tags: []
};

关于提交:

 angular.forEach($scope.expense, function(item) {
    console.log(item);
});

哪个吐出Object {Email: true, Backups: true}但我无法设置一个循环,它只返回哪些对象都是真的。

我的主要目标是拥有像

这样的东西
angular.forEach(forloop) {
    //service.item should be like 'Email' whatever the item.DefaultServiceName is
    // the loop should be all items that are checked
    addService(service.item);
});

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望将对象的键值推送到数组中。如果是这种情况,只需对forEach()

进行一些更改即可

像这样:

// The first parameter is what you want to loop through
// Second is the iterator, you can separate out the key and values here
// The third is the context, since I put the array we want to push to in here
// we just need to call `this.push()` within the iterator
angular.forEach($scope.expense, function(value, key) {
  this.push(key);
}, $scope.expense.tags);

如果有帮助,请告诉我。