Ember.js 为什么在ember js中的任何路由下都需要索引路由?

Ember.js 为什么在ember js中的任何路由下都需要索引路由?,ember.js,Ember.js,我最近在学习余烬js。但有一件事我不明白,为什么对于所有常规路由,总是有一个默认的子路由“索引”。我们为什么需要它?是否有这样的使用案例?无论何时输入路线,索引路线都是您输入的主要路线。例如,输入/blogs,加载的模板是blogs.index模板 通过使用索引路由,您可以显示子路由不可见的内容。例如,以下路由器: Router.map(function () { this.route('parent', function () { this.route('child'); })

我最近在学习余烬js。但有一件事我不明白,为什么对于所有常规路由,总是有一个默认的子路由“索引”。我们为什么需要它?是否有这样的使用案例?

无论何时输入路线,索引路线都是您输入的主要路线。例如,输入/blogs,加载的模板是blogs.index模板

通过使用
索引
路由,您可以显示子路由不可见的内容。例如,以下路由器:

Router.map(function () {
  this.route('parent', function () {
    this.route('child');
  });
});
父模板:

<p>I am the parent<br>
This template is visible if a user visits both /parent and /parent/child routes</p>

{{outlet}}
我是家长
如果用户同时访问/parent和/parent/child路由,则此模板可见

{{outlet}}
父索引模板

<p>I am still the parent<br>
This template is only visible if a user visits the /parent route<</p>
我仍然是家长

此模板仅在用户访问/父路由时可见为了更好地理解,您可以通过单击特定节点来检查和播放树状视图,您可以看到

  • 网址
  • 路线
  • 控制器
  • 模板大纲(此处将显示 模板的层次结构)
  • 路由钩子(验证阶段钩子[
    beforeModel()
    model()
    afterModel()
    )和 设置阶段挂钩[
    activate()
    setupController()
    renderTemplate()
    ])
我只是想解释一下

默认情况下,如果尚未定义任何管线

Router.map(function() {
});
默认情况下,您将拥有
应用程序
索引
路由。始终记住,父路由没有URL,您将始终处于此路由的子状态(例如application.index)

如果您有子路由,那么您肯定应该在父模板中有
{{outlet}}
,这样子模板将显示在父模板outlet中

这里您不能单独访问应用程序路由,如果您说URL是
/
,那么它意味着
应用程序.index
路由,因此它将运行
应用程序
路由挂钩和
索引
挂钩。它将呈现
application.hbs
,并在
application.hbs
{outlet}
中呈现
index.hbs

Router.map(function() {
});