为什么我们需要在ember js中的任何路径下的索引路由?

时间:2017-07-13 22:41:25

标签: ember.js

我最近在学习ember js。但有一点我不明白为什么,对于所有常规路线,总会有一个默认的子路线" index"用它。为什么我们需要它?是否有任何用例?

3 个答案:

答案 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() {
});

默认情况下,您将拥有applicationindex路线。永远记住父路线没有网址,您将始终处于此路线的子状态(例如application.index)。

如果您有子路线,那么您应该在父模板中{{outlet}},以便子模板将显示父模板插座。

此处您无法单独访问应用程序路由,如果您说URL为/则表示application.index路由,因此它将运行application路由挂钩和index挂钩。它会呈现application.hbs,并会在index.hbs的{​​{1}}中呈现{{outlet}}