我最近在学习ember js。但有一点我不明白为什么,对于所有常规路线,总会有一个默认的子路线" index"用它。为什么我们需要它?是否有任何用例?
答案 0 :(得分:5)
通过使用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.index模板
<p>I am still the parent<br>
This template is only visible if a user visits the /parent route<</p>
parent.child模板
<p>I am the child<br>
This template is only visible if a user visits the /parent/child route</p>
注意: parent.index模板和子模板都在{{outlet}}
内呈现!
答案 1 :(得分:0)
索引路线是您输入路线时输入的主要路线。例如,您输入/ blogs,加载的模板是blogs.index模板。
答案 2 :(得分:0)
为了更好地理解,您可以通过单击特定节点来检查http://alexspeller.com/ember-diagonal/route/post并使用树视图进行播放,然后您可以看到,
beforeModel()
,model()
,afterModel()
]和
设置阶段挂钩[activate()
,setupController()
,renderTemplate()
])。我只是想解释一下,
默认情况下,如果您尚未定义任何路线,
Router.map(function() {
});
默认情况下,您将拥有application
和index
路线。永远记住父路线没有网址,您将始终处于此路线的子状态(例如application.index)。
如果您有子路线,那么您应该在父模板中{{outlet}}
,以便子模板将显示父模板插座。
此处您无法单独访问应用程序路由,如果您说URL为/
则表示application.index
路由,因此它将运行application
路由挂钩和index
挂钩。它会呈现application.hbs
,并会在index.hbs
的{{1}}中呈现{{outlet}}
。