4

我需要一种让 ember 路由器路由到递归路径的方法。

For Example:
/:module
/:module/:submodule
/:module/:submodule/:submodule
/:module/:submodule/:submodule/...

这可以用 Embers 路由器完成吗?如果可以,怎么做?

我一直在寻找例子,撕开源头,我几乎得出了结论,这是不可能的。

在上一个问题中,有人向我指出了一种手动获取 url 并将其拆分的方法,但我一直坚持创建路由器解析的状态。

截至目前,在我的项目中,我目前只使用 Ember.HashLocation 来设置我自己的状态管理器。

之所以需要这样做,是因为模块定义存储在数据库中,并且可以在任何给定点递归地添加子模块的子模块。所以我试图让应用程序引擎处理更改。

4

2 回答 2

1

您在数据库中的子模块是否没有唯一 ID?在我看来,与其在路径中表示您的层次结构,不如直接转到适当的模块或子模块。当然层次结构仍然在您的数据模型中,但它不应该您的路由方案中表示。只需使用:

/module/:moduleId
/submodule/:submoduleId

并且不要对路线中的层次结构进行编码。我知道这样做可能很自然,但可能没有技术原因。

如果您的子模块没有唯一 ID,则可能会更难一些...您可以通过将祖先 ID 连接在一起(例如,使用下划线)来构建唯一 ID,这类似于拆分 URL,但可能更简洁一些. 我会说 Ember/Ember Data 似乎不太容易与具有复合键的实体一起使用——如果一切都有一个简单的数字键,一切都会变得更容易(任何想与我争论的人,请向我解释如何!)。

于 2013-01-09T13:52:52.407 回答
0

你的意思是这样的:

App.Router.map(function(match) {
  match('/posts').to('blogPosts');
  match('/posts/:blog_post_id').to('showBlogPost');
});
于 2013-01-09T09:50:52.957 回答