【问题标题】:Multiple nested routes with shared templates具有共享模板的多个嵌套路由
【发布时间】:2014-11-30 10:16:07
【问题描述】:

我正在创建一个 Ember,其主要目的是以几种不同的方式显示信息集合。数据的主要结构如下:Projects包含多个Groups,其中包含多个DocumentsGroup 中的 Documents 彼此之间也有父子关系。

我尝试创建的此数据的两个视图是:

  1. 查看组的 文档
  2. 之间的关系
  3. 查看属于的所有文档

这两个都需要在显示信息之前选择项目,而第一个还需要选择初始文档。选择项目文档的功能也将用于数据的其他视图。

因此,我希望在不同的视图中重用一堆路由和模板。

我目前正在使用此路线图(以及相关路线和模板)的第一个视图:

this.resource('RelationshipView', { path: '/relationship'}, function(){
  this.resource('Project', { path: '/:project_id'}, function(){
    this.resource('Group', { path: '/:group_id'}, function(){
      this.resource('Document', { path: '/:doc_id'});
    });
  });
});

我想添加这个路线图:

this.resource('DocumentTable', { path: '/relationship'}, function(){
  this.resource('Project', { path: '/:project_id'}, function(){
    this.resource('Group', { path: '/:group_id'});
  });
});

我最初尝试更改最后一个资源的名称并为其创建一个新模板。但是我在从父资源链接到它时遇到了麻烦。

如果当前路径是端点,下一个想法是更改为路由呈现的模板。但是现在我遇到了一个问题,即进入 ./RelationshipView/ 并单击链接以转到 ./RelationshipView/:project_id 并最终进入 ./DocumentTable/:project_id

有人有什么想法吗?

现在看来,我不得不放弃模板和路由复用的想法,这意味着一堆复制粘贴:(

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    您应该尝试使用partial template。将真正的模板代码放在单独的部分中,然后在 Group 模板中调用该部分。我发现这比更改路由将呈现的模板更容易理解。

    不过,您可能不得不重命名您的资源。您不能拥有多个具有相同名称的资源。但是,如果您使用部分模板来共享模板,则名称应该无关紧要。

    【讨论】:

    • 看起来不错!我不介意更改资源,但真的不想复制粘贴模板。我将在几个小时内对其进行测试,然后更新:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 2014-06-30
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    相关资源
    最近更新 更多