您好,我正在AngualarJS 5中开发Web应用程序。我有一个数组,我正在尝试根据收到的输入更新同一数组。下面是我的数组。
[
{
checked:false,
id:1109376510842,
name:"info model",
children:
[
{
checked:false,
id:5763308644187,
name:'Configmodel'
},
{
checked:false,
id:5763308655187,
name:'Devicemodel'
}
]
},
{
checked:false,
id:1109376580842,
name:"data access",
children:
[
{
checked:false,
id:57633458644187,
name:'Configmodel'
},
{
checked:false,
id:57633084555187,
name:'Devicemodel'
}
]
}
]
我还有一个输入数组,它给出的细节很少。基于该数组,我想更新我的父数组。我的输入对象提供了以下详细信息。
{
parent: info model,
data:{
checked:true,
id:5763308644187,
name:'Configmodel'
}
}
因此,基于上述对象,我想更新我的父对象。我的对象包含父对象,这指示必须更新父数组中的哪个对象。对象还包含内部检查的子代。现在它是真的,所以我想更新父表的信息模型中的子项。 我尝试如下。
if (node.hasChildren) {
let copyCreate = Object.assign({}, node.data);
copyCreate.checked = cb.checked;
const targetIdx = this.createnode.map(item => item.name).indexOf(copyCreate.name);
this.createnode[targetIdx] = copyCreate;
}
else {
let copyCreate = Object.assign({}, node.data);
copyCreate.checked = cb.checked;
const parent = this.createnode.find(e => e.name === node.parent.data.name);
if (parent) {
const child = parent.children.find(e => e.id === node.data.id);
if (child) {
child.checked = copyCreate.checked;
} else {
parent.children.push(copyCreate);
}
}
}
有人可以帮我解决这个问题吗?谢谢
答案 0 :(得分:0)
我希望我能正确理解你。您可以在服务程序组件中执行以下操作:
updateObject(fullDataArray, updateObj) {
// Find the parent
const parent = fullDataArray.find(e => e.name === updateObj.parent);
// If the parent is set, search for the respective child entry
if (parent) {
const child = parent.children.find(e => e.id === updateObj.data.id);
if (child) {
// Updates the childs checked attribute
child.checked = updateObj.data.checked;
} else {
// Add child if not exist
parent.children.push(updateObj.data);
}
}
}