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