2012-10-31 45 views
2

我有文件和文件夹。文件夹包含文件。Angularjs:处理项目数据中外键的最佳方法

,我从服务器获取JSON看起来是这样的:

folder: {id: 5, name: "my stuff" } 
file: {id: 3, name: "my file", folderId: 5} 
file: {id: 5, name: "my file 2", folderId: 5} 

请告诉我建立一个文件夹的最佳方式 - 文件结构?巢状文件夹中的文件:

{id: 5, name: "my stuff" files: [ 
    {id: 3, name: "my file", folderId: 5}, 
    {id: 5, name: "my file 2", folderId: 5} 
]}, 
{id: 6, name: "other things" files: [ 
    {id: 1, name: "my file", folderId: 6}, 
    {id: 2, name: "my file 2", folderId: 6} 
]} 

或者使用一个过滤器,只返回属于某个文件夹ID的文件?像:

<li ng-repeat="folder in folders"> 
    <ul> 
     <li ng-repeat="file in files | fileInFolder:folder.id"></li> 
    </ul> 
</li> 

文件可以移动到不同的文件夹!

+0

过滤选项太慢了,因为我只在尝试访问单个项目时迭代了所有项目。我建立了一些缓存,对我需要的对象进行正确的过滤,现在它像一个魅力一样工作 – user1703761

回答

1

“最好的方式”总是以最简单的方式维护。对我个人而言,我喜欢选项2(过滤器),因为它符合您获得的数据。然而,选项1(json结构)更好地表示了IMO的数据。如果你坚持使用这种数据结构,那么我认为选项2是我的选择。

...但我对你的应用程序结构一无所知。这是否持续到数据库?什么时候持续?瞬间?或者只有在保存被调用后?很多因素会影响到哪些结构最适合您,并且更适合您的特定解决方案。

+0

这将永久保存到数据库中。另外,我可以创建现在的文件夹和文件。这也应该立即保存。 – user1703761

+0

+1过滤选项。你不想经常重构你的数据 –

相关问题