2012-10-31 46 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過濾選項。你不想經常重構你的數據 –

相關問題