EmberJS嵌套动态路由不会按预期重定向

问题描述 投票:0回答:2

使用Ember 2.17.0,我似乎无法获得嵌套在其他动态路由下的路由以正确加载。

使用以下文件结构,我希望stacks路由加载新页面。

features/instances/
├── edit
│   ├── route.js
│   └── template.hbs
├── index
│   ├── route.js
│   └── template.hbs
├── new
│   ├── route.js
│   └── template.hbs
└── view
    ├── route.js
    ├── stacks
    │   ├── route.js
    │   └── template.hbs
    └── template.hbs

stacks端点的URL看起来像/instances/view/91467053-ba03-33b9-8950-83f0e64b4688/stacks/123456

其中123456是堆栈模型的ID。然而,当我触发上面的链接时,页面没有重新加载,我仍然在view路线上。如果我将{{outlet}}标签放入view模板,那么stacks的内容就会呈现在那里。但我想在它自己的页面上...

我的router.js

Router.map(function () {
  this.route('instances', function () {

    this.route('view', {path: '/view/:instance_id'}, function () {
      this.route('stacks', {path: '/stacks/:stack_id'});
    });

    this.route('edit');
    this.route('new');
    this.route('all');

  });
  this.route('error');
});

我在这做错了什么?我找不到有关ember 2.0+的嵌套动态路由的更多信息

javascript ember.js
2个回答
0
投票

我希望我能正确理解你的问题。有两种方法可以做到这一点:

1)而不是view/template.hbs把这个HTML放在view/index/template.hbs,这样view/stacks/template.hbs将不会共享任何view模板代码。

2)而不是在stacks路线嵌套view路线,你用instances上升到path: '/view/:instance_id/stacks/:stack_id'路线,然后相应地移动路线/模板文件


0
投票

Ember中的嵌套路线不像您习惯的那样有效。

在大多数其他视图框架中,嵌套路由意味着对象之间的关系,在Ember嵌套路由中暗示嵌套视图。

因此,例如,如果您希望获得已呈现的消息列表以及在其旁边的详细信息窗格中打开它们的能力,则可以使用messages.index路由来嵌套messages.show路由。

如果你想渲染一些独立的东西(所以没有嵌套在另一个视图中),只需给它自己的路径。

© www.soinside.com 2019 - 2024. All rights reserved.