我希望在同一数组中的两个对象之间设置一个关系,以指出一个任务必须先完成才能开始另一个任务。我尝试使用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>
您可以通过搜索有关递归模板的先前响应来找到有关堆栈溢出的更多信息。
例如:
Stack overflow previous answer about recursive templates