我有一个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是否可行?非常感谢
答案 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