0

我正在 AngularJs 中构建我的第一个应用程序。

这是我到目前为止所做的事情。用户应该能够添加新网站并将它们分组。组也由用户创建。任何时候创建新组时,它都可用于新网站。应用程序还应该做的是使用新分配的网站更新组对象......这就是我失败的地方。

这是 json 的样子:

{
"sites": [
  {
    "url": "http://sfdg",
    "id": 0,
    "groups": [
      {
        "name": "adsf",
        "id": 0
      }
    ]
  }
],
"groups": [
  {
    "name": "adsf",
    "id": 0,
    "sites": [//sites assigned
     ]
  }
]

}

在我使用的 plunkr 代码中,push但这只是添加了新组......

请您指导我实现这一目标的正确方法。

谢谢!

4

1 回答 1

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;
  }

这里更新了plunker

于 2013-07-11T17:33:36.710 回答