所以,我有一个如下对象:
custom_fields:{
21:{
edit:true
required:true
show:true
}
}
我的角度控制器中存储了哪些内容:$scope.page.custom_fields
在这个对象中,我有另一个,像这样:
custom_fields:{
21:{
edit:true
required:true
show:true
}
22:{
edit:true
required:true
show:true
}
data:[
0:{
display_name:"Text"
id:21
name:"Text"
value:[
0:{"TextHere"}
]
}
1:{
display_name:"Text"
id:22
name:"Text"
value:[
0:{"TextHere"}
]
}
]
}
这个存储方式如下:$scope.page.custom_fields.data = response.data.custom_fields;
如您所见,第一个是对象的对象,而第二个是对象的数组。我不知道他们为什么会这样结束,但是我需要将数据中的第一个键分配给自定义字段中的第一个键,所以它们最终看起来像这样:
custom_fields:{
21:{
edit:true
required:true
show:true
display_name:"Text2"
id:21
name:"Text"
value:[
0:{"TextHere"}
]
}
}
我应该在角度控制器中执行此操作。正如您所看到的,数据中的每个ID都与custom_fields中的键相对应(在本例中为21:{}
和data[0:{id:21}]
)
但它们是由一个foreach在php中按顺序排列的,所以也没有必要在js中制作一个foreach,我只需按顺序分配从custom_fields.data
到custom_fields
的每个键的每个键。
但是我怎么能这样做呢?
答案 0 :(得分:0)
答案 1 :(得分:0)
稍后在代码中使用$ scope.page.custom_fields.21将非常困难。因此最好将它用作数组格式而不是对象。以下代码将帮助您在自定义字段的对象数组中解析它。
angular.forEach($scope.custom_fields.data, function(value, idx){ // may be $scope.custom_fields.custom_fields.data as per your code. Please correct accordingly.
if($scope.custom_fields[value.id]){
angular.merge($scope.custom_fields.data[idx], $scope.custom_fields[value.id]);
delete($scope.custom_fields[value.id]);
}
});
$scope.custom_fields = $scope.custom_fields.data;
console.log($scope.custom_fields);
答案 2 :(得分:0)
<nav>
<ol>
<li><a href="reiseziele.html">Reiseziele</a></li>
<li><a href="kontakt.html">Kontakt</a>
<ol>
<li><a href="kontakt_mail.html">E-Mail</a></li>
<li><a href="kontakt_formular.html">Formular</a></li>
</ol>
</li>
</ol>
</nav>
答案 3 :(得分:-1)
正如我在评论中所说,我认为您需要一个循环来对每个自定义字段进行设置
var i = 0;
for (var key in custom_fields) {
if (custom_fields.hasOwnProperty(key)) {
// only if you are sure that data is ordered, else must be filter data by custom_fields[key].id
custom_fields[key].display_name = data[i].display_name;
custom_fields[key].name = data[i].name;
custom_fields[key].value = data[i].value;
i++;
}
}
我希望这会对你有所帮助