【发布时间】:2015-03-18 20:11:49
【问题描述】:
我想用 Ember.js 制作一种目录结构。
以下是 url 的示例:folder/1/folder/44/document/3
如您所见,一个文件夹可以包含多个文件夹,也可以包含文档。我想知道我应该如何在我的路由器中处理这样的事情,因为事先我的应用程序不知道文件夹中是否有其他文件夹或只有文档。
我认为我需要制作单独的路由而不是嵌套路由:
App.Router.map(function() {
this.route('folder', {path: 'folder/:folder_id'}); // -> FolderRoute
this.route('document', {path: 'document/:document_id'}); // -> DocumentRoute
});
当文件夹或文档有父文件夹时,父文件夹的 ID 将在后端的数组中给出。
让我们以我的示例网址为例。最深的嵌套模型是一个 id 为 3 的文档。此文档模型的文件夹 ID 为 44,文件夹 44 的 parent_folder_ids 为 [1]。不知何故,我的路由器需要知道它必须从中生成示例 url。
我已经看到可以使用 router.generate 来生成 url,但我不确定这是否是我需要的,或者 queryParams 是否是最好的解决方案。
【问题讨论】:
-
你需要这样的 url 结构吗?您可以递归地浏览您的文件夹,直到在路由文件中找到您想要的文件夹。因此,如果您总是知道最高的父母,您的网址将只是
folder/44/document/3甚至只是document/3。 -
我同意@rogMaHall。此外,限制为 1 级会使事情变得更干净。另见weblog.jamisbuck.org/2007/2/5/nesting-resources。顺便说一句,我会递归地获取父资源,而不是一次将它们全部返回到一个数组中。
标签: ember.js nested ember-cli nested-routes