ember.js 嵌套索引路由未在插座中正确呈现

vuv7lop3  于 2022-11-23  发布在  其他
关注(0)|答案(2)|浏览(142)

我正在尝试在taking-cash{{outlet}}中渲染taking-cash/index

router.js

this.route('retirement-options', function () {
    this.route('taking-cash');

除非明确指定/index路径,否则它不会在插座内呈现:

this.route('retirement-options', function () {
    this.route('taking-cash', function() {
      this.route('index', { path: '' });
    });
  });

为什么/index不是隐含的,我不能在router.js中指定它吗?

3okqufwl

3okqufwl1#

Ember仅为至少有一个其他子路由的路由自动提供索引路由。
让我们看一下您的示例:

this.route('retirement-options', function () {
    this.route('taking-cash');
  });

这将创建三条路由:

  • retirement-options
  • retirement-options.index
  • retirement-options.taking-cash

retirement-options.indexretirement-options.taking-cash两者共享相同的父路由retirement-options
retirement-options本身不可导航。它将始终解析为retirement-options.index路线,除非转换明确指向taking-cash子路线。
只要您添加另一个子路由到retirement-options.taking-cash,Ember就会自动为其创建索引路由。
你可以通过创建一个路由来强制一个显式的索引路由,但是把一个索引路由作为唯一的叶节点并没有太大的价值。
有关 * 索引路线 * 的更多信息,请参阅以下指南:https://guides.emberjs.com/release/routing/defining-your-routes/#toc_index-routes

xqkwcwgp

xqkwcwgp2#

Ember只会自动为路由提供索引路由,但它不需要有一个特别的子路由,它实际上是回调函数。
看看这个例子

this.route('retirement-options', function() {
  this.route('taking-cash', function() {
    this.route('index', { path: '' });
  });
});

索引部分并不是强制性的。2只要你声明了回调函数,索引就会出现。
这将与上面的示例完全相同。

this.route('retirement-options', function() {
  this.route('taking-cash', function() {});
});

相关问题