gpt4 book ai didi

ember.js - 为什么 Ember 路由器只允许导航到叶路由?

转载 作者:行者123 更新时间:2023-12-02 22:00:43 25 4
gpt4 key购买 nike

我最近注意到 Ember Router 的一件事是它只允许导航到叶路由 - 没有子路由的路由。

现在,除非我做的事情不正确,否则这看起来像是设计中的错误/错误。

让我们举个例子:

我有一个项目集合,每个项目都有许多合作者,因此我想构建一个具有 3 列布局的 UI(类似于标准桌面电子邮件客户端),其中左侧有一个项目列表,当单击项目,中间列会显示协作者列表,单击协作者会将其详细信息加载到右侧列中。

现在,通过路由,我想在单击项目时导航到 /projects/1 ,并在单击协作者时导航到 /projects/1/collaborators/23 .

这是一个路由器,说明了嵌套路由的第一部分:

App.reopen(
Router: Ember.Router.extend(
enableLogging: true
location: 'hash'

root: Ember.Route.extend(
index: Ember.Route.extend(
route: '/'

redirectsTo: 'projects'
)

projects: Ember.Route.extend(
# This route is not routable because it is not a leaf route.
route: '/projects'

connectOutlets: (router) ->
# List projects in left column
router.get('applicationController').connectOutlet('projects', App.projects)

show: Ember.Route.extend(
# This route is routable because it is a leaf route.
route: '/:project_id'

connectOutlets: (router, project) ->
# Render the project into the second column, which actually renders
# a list of collaborators.
router.get('projectsController').connectOutlet('project', project)
)
)
)
)
)

如您所见,由于此行 https://github.com/emberjs/ember.js/blob/master/packages/ember-routing/lib/routable.js#L81,Ember 在转换到 root.projects.show 之前不会调用 updateRoute(设置 URL)

还有其他人做过类似的事情吗?有更好的设计方法吗?

最佳答案

我发现执行此操作的最佳方法是使用“/”路径的 root.projects.index 状态,仅此而已。这样每个页面都有自己的特定状态。

projects: Ember.Route.extend(
# This route is not routable because it is not a leaf route.
route: '/projects'

connectOutlets: (router) ->
# List projects in left column
router.get('applicationController').connectOutlet('projects', App.projects)

index: Ember.Route.extend(
route: "/"
)

show: Ember.Route.extend(
# This route is routable because it is a leaf route.
route: '/:project_id'

connectOutlets: (router, project) ->
# Render the project into the second column, which actually renders
# a list of collaborators.
router.get('projectsController').connectOutlet('project', project)
)
)

注意话虽这么说,我正在使用 3 列布局做类似的事情,并将中间列和右列与上面的路线相匹配,并将共享布局中的左列添加到每个可能的中间 View 。

关于ember.js - 为什么 Ember 路由器只允许导航到叶路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11380369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com