我有一个json对象,我从角度应用程序中获取get请求。它为我提供了两个主要属性data
和included
。 included
对象以某种方式与data
对象建立关系。例如,data
显示消息,included
显示这些消息的发件人。我设法通过检查数据对象中的属性是否与包含的对象中的另一个属性相同来将每条消息与发送方相关联。这是我的代码
$http.get('data.json').then(
function(jsonAPI) {
console.log(jsonAPI);
var dataObj = {};
var messages = [];
$.each(jsonAPI.data.data, function(x, data) {
dataObj[x] = data;
$.each(jsonAPI.data.included, function(y, included) {
if (data.relationships.sender.data.id == included.id) {
dataObj[x].sender = included;
}
});
messages.push(dataObj[x]);
});
$scope.newMessages = messages;
},
function(errorResponse) {
// todo handle error.
}
);
我创建了一个新数组,其中包含data
属性下的所有sender
对象和发件人信息。问题是添加了一个名为user_data_template
的新关系。我希望以类似的方式将messages
数组传递给相应的user_data_template
数据。如何更改上面嵌套的$ each函数来实现呢?
这是一个有效的plunker
答案 0 :(得分:0)
我设法找到了解决方案。我不得不将代码更改为以下内容:
$.each(jsonAPI.data.data, function(x, data) {
dataObj[x] = data;
$.each(jsonAPI.data.included, function(y, included) {
if(data.relationships.sender.data.id == included.id && included.type == "user") {
dataObj[x].sender = included;
}
if(data.relationships.user_data_template.data !== undefined) {
if(data.relationships.user_data_template.data.id == included.id && included.type == "user_data_template") {
dataObj[x].question = included;
}
}
});
messages.push(dataObj[x]);
});
新的plunker