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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EmberJS嵌套动态路由不会按预期重定向相关的知识,希望对你有一定的参考价值。

使用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+的嵌套动态路由的更多信息

答案

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

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'路线,然后相应地移动路线/模板文件

另一答案

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

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

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

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

以上是关于EmberJS嵌套动态路由不会按预期重定向的主要内容,如果未能解决你的问题,请参考以下文章

Ember JS 过渡到嵌套路由,其中​​所有路由都是视图中的动态段

react嵌套路由(多重路由)重定向,重定向到404页面,路由重定向

Paypal 未按预期重定向

MVC 中的重定向无法按预期工作

vue-router路由嵌套与二级路由重定向

Vue--参数传递及重定向