我正在AngularJs中构建我的第一个应用程序。
这是plunkr以及我到目前为止所做的事情。用户应该能够添加新网站并将它们分组。组也由用户制作。无论何时创建新组,它都可用于新网站。应用程序还应该做的是用新分配的网站更新组对象......这就是我失败的地方。
以下是json的样子:
{
"sites": [
{
"url": "http://sfdg",
"id": 0,
"groups": [
{
"name": "adsf",
"id": 0
}
]
}
],
"groups": [
{
"name": "adsf",
"id": 0,
"sites": [//sites assigned
]
}
]
}
在plunkr代码中,我使用了push
但只添加了新的组...
请你指导我找到正确的方法。
谢谢!
答案 0 :(得分:1)
为防止循环引用(网站对象引用引用网站对象的组对象等),我会将id存储到相关对象中。
首先,在创建新组时,向其中添加一个空的sites
数组:
function createGroup(newGroup) {
newGroup.sites = []; // <-- add empty array of sites
$scope.groups.push(newGroup);
newGroup.id = groupIdSeq;
groupMap[newGroup.id] = newGroup;
groupIdSeq++;
return newGroup;
}
然后,当您创建新网站时,请更新添加该网站的每个组:
function createSite(newSite, groups) {
$scope.sites.push(newSite);
newSite.id = siteIdSeq;
sitesMap[newSite.id] = newSite;
// instead of storing the groups array, only store their id:
newSite.groups = groups.map(function(group) { return group.id });
// and add this new sites id to the groups' sites array.
groups.forEach(function(group) {
group.sites.push(newSite.id);
});
siteIdSeq++;
return newSite;
}