Angular,使用某种递归搜索的ng-repeat

3

我有一个有点奇怪的问题要解决。我有一个解决方法的想法,但我当然愿意接受任何建议或其他方向,因为我不确定这是否是正确的路线。

我想做的是使用ng-repeat,但让它显示对象中“apps”键内的最低级项(它是一个大对象)。

因此,对象设置如下(如果我不必太多更改此对象,则会很好,因为它也在其他地方使用)。以下是对象中的一项。

$scope.myObject = [{
        name: 'Name1', 
        subs: [
            {
                name: 'Sub 1', 
                subs: [
                        {
                            name: 'Sub 1-1', 
                            apps: [
                                {
                                name: 'App 1' 
                                }
                            ]
                        }
                ],
                apps: [
                        {
                            name: 'App'
                        }
                ]
            }

因此,这个想法是 - 对象内的任何级别都可以具有子级或应用程序。 Subs 意味着它内部有一个组,并且 apps 数组是最低所需级别。 我的预期效果是能够重复 myObject,其中仅显示应用程序,目前顺序并不重要,但我希望在整个对象内遍历并提取任何应用程序,无论它们有多深。

我需要一些指导,以了解如何检索此对象中的所有应用程序,任何帮助将不胜感激。 谢谢!

编辑1:

因此,为了澄清,我正在寻找的最终结果是做类似 ng-repeat 的事情(再次强调,不一定是重复),并最终获得所有应用程序的列表,无论它们在对象中的位置如何。

例如 -

  <div ng-repeat="items in myObject" >
   {{name}}
  </div> 

只会返回应用程序,因此在此示例对象中,App 1和App。

编辑2:这是我的递归尝试

   <div ng-repeat="item in myObject">
   <div ng-repeat="subs in item.subs" ng-include="'subTracks.html'" >

   <script type="text/ng-template" id="subTracks.html">
     <div ng-repeat="app in subs.apps">
    {{app.name}}
    </div>
    <div ng-repeat="subs in subs.subs" ng-include="'subTracks.html'" >

    </div>
</script>

在这里只有一个“陷阱”,那就是如果你依赖自动编译机制,你将陷入无限递归循环中。不过,也有解决方案:https://dev59.com/uWYq5IYBdhLWcg3wfwxx - Sergiu Paraschiv
你的目标或者你所询问的内容并不是很明确。 - Code Whisperer
谢谢,例如这个句子我可以使用一些指导来解决这个问题,可以说我可以使用一些指导来解决[输入具体的技术要求]。 - Code Whisperer
@itcouldevenbeaboat编辑了,感谢您的建议! - ajmajmajma
@SergiuParaschiv 看起来是这样,也许可以先在 JavaScript 中将对象过滤为仅限应用程序?不过我不太确定如何操作。谢谢! - ajmajmajma
显示剩余2条评论
1个回答

2

在对其进行重复之前,您需要将嵌套数组转换为平面数组。

您可以使用自定义的reduce函数,或查看这篇文章http://bost.ocks.org/mike/nest/,其中介绍了d3.nest,它可以生成您需要的数组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接