将JSON复制为模板

时间:2015-02-18 17:41:34

标签: javascript json angularjs

我有一个json模板,我填充了数据 - 在这种情况下是产品数据。例如,我有以下json

// product template  
$scope.productAttributes = {
        "Code": null,
        'Attributes':
        {}
    };

当用户通过Ui输入一些产品详细信息并调用loadPrices()时,我会使用此函数填充productAttributes ...

    var loadPrices = function () {
    $scope.entity = {// grabs variables from a form};
        $scope.productAttributes.Code = $scope.productID.toUpperCase();
        $scope.productAttributes.Attributes = $scope.entity;
        $scope.productAttributes.Attributes.Term = $scope.productAttributesObj.Term;
        $scope.productAttributes.Attributes.Quantity = 1;          
    };

这是productAttributes的结果......

{

"Code": "CON7",    
"Attributes": {        
    "Postcode": "n44er",        
    "rSize": 1000,        
    "Bandwidth": 10,        
    "Term": "36",        
    "Quantity": 1    
}
}

所以我的问题是,当我想通过调用loadPrices添加新数据时,每次尝试添加到productAttributes时都会覆盖productAttributes。我希望创建一个像这样的结构......

{

"Code": "CON7",    
"Attributes": {        
    "Postcode": "n44er",        
    "Size": 1000,        
    "Bandwidth": 10,        
    "Term": "36",        
    "Quantity": 1    
},
"Code": "CON34",    
"Attributes": {        
    "Postcode": "nww45",        
    "Size": 10,        
    "Bandwidth": 10,        
    "Term": "36",        
    "Quantity": 1    
},
"Code": "CON89",    
"Attributes": {        
    "Postcode": "sw23ed",        
    "Size": 101,        
    "Bandwidth": 101  
}
}

我是如何实现这一目标的?任何建议将不胜感激。

另外,我想在每个“Attributes”对象中创建一个ID字段,例如(“ID”:“9e5670fa-2fd7-4858-a667-c99cb5baf0f9”)。使用Angular的javascript创建guid是否可行?非常感谢

2 个答案:

答案 0 :(得分:1)

使变量成为一个数组并将对象推入数组。

$scope.productAttributes = [];

var loadPrices = function () {
  var item = {
    code: $scope.productID.toUpperCase();
    attributes: {
      term: $scope.productAttributesObj.Term,
      quantity: 1
    }
  }

  $scope.productAttributs.push(item);       
};

你可以让你的物品对象成为你需要的东西,我不知道你是如何进入的。但是将这些物品推入阵列会给你你想要的东西。

答案 1 :(得分:1)

试试这个:

var loadPrices = function () {
    $scope.entity = {/* grabs variables from a form*/};
    var myEntity = {};
    myEntity.Code = $scope.productID.toUpperCase();
    myEntity.Attributes = $scope.entity;
    myEntity.Attributes.Term = $scope.productAttributesObj.Term;
    myEntity.Attributes.Quantity = 1;         

    $scope.productAttributes.push(myEntity);
};

并且不要忘记将$ scope.productAttributes声明为Array

$scope.productAttributes = [];

btw,有关json操作的更多信息: Adding/removing items from JSON data with JQuery