我需要一种方法让ember路由器路由到递归路径。
For Example:
/:module
/:module/:submodule
/:module/:submodule/:submodule
/:module/:submodule/:submodule/...
这可以用Embers路由器完成,如果是,怎么做?
我一直在寻找例子,撕掉了源头,而且我已经得出结论,这是不可能的。
在之前的一个问题中,有人指出了一种手动获取网址并将其拆分的方法,但我仍然坚持创建路由器要解析的状态。
截至目前,在我的项目中,我目前只使用Ember.HashLocation来设置我自己的状态管理器。
需要这样做的原因是因为模块定义存储在数据库中,并且在任何给定点可以递归地添加子模块的子模块。所以我试图让Application Engine处理这个变化。
答案 0 :(得分:1)
数据库中的子模块是否没有唯一ID?在我看来,您应该直接进入相应的模块或子模块,而不是在路径中表示您的层次结构。当然,层次结构仍然在您的数据模型中,但它不应该 在您的路由方案中表示。只需使用:
/module/:moduleId
/submodule/:submoduleId
不要对路由中的层次结构进行编码。我知道这样做可能很自然,但可能没有技术上的理由。
如果您的子模块没有具有唯一ID,那可能会有点困难......您可以通过将祖先ID连接在一起(例如,使用下划线)来构建唯一ID,这类似拆分URL,但可能更清洁一点。我会说Ember / Ember Data对于带有复合键的实体来说似乎不太容易使用 - 如果所有内容都有一个简单的数字键,一切都变得更容易(任何人都想与我争论,请向我解释!)。
答案 1 :(得分:0)
你的意思是这样的:
App.Router.map(function(match) {
match('/posts').to('blogPosts');
match('/posts/:blog_post_id').to('showBlogPost');
});