没有父/子比较器的递归AngularJS Ng-Repeat

我需要为我的文件结构创建一个递归ng-repeat。

我在互联网上发现的一切都是使用父母/子女比较器。 像这样:

$scope.categories = [ { title: 'Computers', categories: [ { title: 'Laptops', categories: [ { title: 'Ultrabooks' }, { title: 'Macbooks' } ]}, // ......continued..... 

但是,我的数据存储在firebase中,就像这个JSFIDDLE, https: //jsfiddle.net/mdp4dfro/6/中显示的那样。 (我不会花时间格式化所有这些,所以StackOverflow很高兴….)

现在,这就是我的ng-repeat。 如果我想添加另一个分支,我必须创建另一个分支。 我只想让它自动发生。

 
  • {{foKey}}
    • {{object.Name}} {{obKey}}
    {{folder.Name}}

我如何使这个代码递归,所以它包括每个级别,无论多少。

这是我得到的最好的评论,发布的地方,我很难得到帮助,可能需要SPOON FED。 抱怨它。

 projectRef.child('code').once('value', function(snapshot){ var tree = []; angular.forEach(snapshot.val(), function(object, key){ if(object.Key) { console.log(object.Key); } else { tree.push(object); } }) projects.projectCode = tree; }) 

现在这就是我得到的,但结果相同,(forEach inEach inEach)…..

 projectRef.child('code').once('value', function(snapshot){ angular.forEach(snapshot.val(), function(data, key){ if(!key.indexOf('-') == 0) // Is Folder { } else if(key.indexOf('-') == 0) // Is File { console.log(data.Name); } }) }) 

UPDATE

因此,我设法获取Firebase中的信息以保存“children”中的所有文件夹内容。

而不是

 css : { .. files } 

我有

 css : { children : { .. files } } 

这可以更好地工作吗?

有了这个,我想出了HTML Starter。 现在我只需要弄清楚递归到我需要的深度……自动。

 
  • {{object.$id}}
    • {{key}} {{child.Name}}
    {{object.Name}}

更新二

我设法做了以下。 但是当我在模板中添加ng-include来重新运行代码时…我在代码之后得到了错误。

 
  • {{object.$id}} {{object.Name}}
  • {{key}} {{child.Name}}

错误:

 angular.js:13920 TypeError: Cannot read property 'insertBefore' of null 

删除了ng-include的重复并获得了无限的摘要错误。

它似乎布局第一层和第二层文件夹/文件就好了但是一旦它过去它就冻结了上面的任何一个错误。

在问题的第二部分中,我需要更新一些内容。

我需要

  • 从模板中的li中删除NG-Include。

  • 用’object’替换模板中的’child’

这与改变Firebase中存储数据的方式相结合,最终使这个问题得以解决。 更正后的代码如下。

 
  • {{object.$id}} {{object.Name}}