在Angular中将空数组添加到json对象

时间:2014-12-01 02:14:10

标签: javascript json angularjs

问题问题: 我正在调用API并返回该对象。现在我想将空数组添加到此对象并在我的视图中使用它。我如何用角度来实现这个目标?

//控制器这可以作为数据手动

$scope.deliveryData = [
            {
                productName: 'ProductA ProductA ProductA', quantity: '20', deliveries: []
            },
            {
                productName: 'Product B', quantity: '10', deliveries: []
            }
        ];

// controller这不起作用:(我如何添加(deliveryies:[])到这个?

 $scope.deliveryData; // This will be now populated from API 
     MyService.delivery()
        .success(function(data){
            $scope.deliveryData= data;
            console.log(data) //this data does not contain the empty array, how i append to it?
        })
        .error(function(status,data){
            console.log(status);
            console.log(data);
        })

我不知道如何以棱角分明的方式实现这一目标,即使我不知道我是否正在以正确的方式行事。请给我任何建议。

更新1

 .success(function(data){
                $scope.deliveryData = data;
                console.log("Before Change");
                console.log($scope.deliveryData);
                for (var i = 0; i < $scope.deliveryData.length; i++) {
                    $scope.deliveryData[i].deliveries = [];
                }
                console.log("After Change");
                console.log($scope.deliveryData);
            })

以下列格式来自API的数据:

-Object {delivery: Array[1]}
 --delivery: Array[1]
   ---0:Object
   ----name: "ProductA ProductA ProductA"
   ----quantity: 14 

1 个答案:

答案 0 :(得分:1)

要为每个产品项添加{deliveries: []},您应该执行以下操作:

    .success(function(data){
        $scope.deliveryData = data.delivery;
        for (var i = 0; i < $scope.deliveryData.length; i++) {
            $scope.deliveryData[i].deliveries = [];
        }
    })

更新

这是基本的东西,没有办法不起作用,请看这里:

var $scope = {};

$scope.deliveryData = [ // no deliveries here
    {productName: 'ProductA ProductA ProductA', quantity: '20'},
    {productName: 'Product B', quantity: '10'}
];

for (var i = 0; i < $scope.deliveryData.length; i++) {
    $scope.deliveryData[i].deliveries = [];
}

document.getElementsByTagName('pre')[0].innerHTML = JSON.stringify($scope, null, '\t');
<pre></pre>