没有父/子比较器的递归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}}