同一数组(AngularJS)中的javascript对象之间的一对一关系

One-to-one relationship between javascript objects in same array (AngularJS)

本文关键字:之间 对象 一对一 关系 javascript 中的 数组 AngularJS      更新时间:2023-09-26

我希望在同一数组中的两个对象之间设置关系,目的是注意一个任务必须先完成,然后另一个任务才能开始。我尝试使用AngularJS的ng-options指令,使用ng-model将子对象设置为父对象的属性。这成功地将属性设置为对子对象的引用(例如,编辑子对象将使更改显示在父对象中,而不仅仅是复制它(。

现在我面临两个问题:

  • 在会话之间重新创建数组 - 我将把数据存储在数据库和/或本地存储中。我可能需要为每个对象和查找存储一个唯一的 ID,并在加载序列期间将其设置为属性。这是最好的方法吗?Angular 的 $$hashkey 美元私有属性是否适合这样做,或者我应该为这些对象制作自己的"主键"?(无论如何,我最终必须这样做(
  • 将子对象设置为父对象的属性固然很好,但是如果我在子对象上并想要查找父对象怎么办?这是否只是遍历数组中的所有内容并找到匹配的 ID 的问题?

谢谢

最好的方法是使用 Angular 框架处理绑定中的关系 - 在视图中创建一个递归模板,并在 javascript/typescript 中创建一个视图绑定到的模型。

这是通过使用 ng-template 指令作为父 html 视图中的脚本来完成的。

您可能需要通过在控制器中设置属性并将其绑定到模型来对其进行一些自定义。显示/不显示某些控件的一个示例是使用基于父模型值的 ng-if 指令。

所需 html 的示例是:

<script type="text/ng-template" id="recursiveTemplate">
   <ul>
      <li ng-repeat="field in record.fields" ng-include="'recursiveTemplate'">
      </li>
   </ul>
</script>
<ul ng-controller="childCtrl">
   <li ng-repeat="field in records" data-ng-include="'recursiveTemplate'">
   </li>
</ul>

您可以通过搜索有关递归模板的先前响应来了解有关堆栈溢出的更多信息。

例如:堆栈溢出 关于递归模板的先前答案