【问题标题】:Ember nested route not rendering templateEmber 嵌套路由不渲染模板
【发布时间】:2017-09-19 17:30:00
【问题描述】:

我正在使用最新的 ember-cli 版本 2.12.1 和 ember。

我已将我的路线配置为:

 Router.map(function() {
  this.route('companies', function() {
    this.route('companydetail', {
      path: '/:company_id'
    }, function() {
      this.route('employees', function() {
        this.route('employeedetail', {
          path: '/:employee_id'
        });
      });
    });
  });
});

模板在

/templates/companies/index.hbs
/templates/companies/companydetail.hbs
/templates/companies/companydetail/employees/employees/employeedetail.hbs

我可以链接到路线

{{#link-to "companies.companydetail.employees.employeedetail" model employee}}Edit{{/link-to}}

这行得通。但是没有渲染模板。 而是使用 companydetail.hbs。我改变了 /routes/companies/companydetail/employees/employeedetail.js 以呈现正确的模板:

renderTemplate: function(params) {
    this.render('companies/companydetail/employees/employeedetail', {
      into: 'application'
    });
}

这是可行的,但是:对模型的调用(对服务器的请求)尚未完成。我可以尝试手动拨打电话,但我开始相信我的路线有问题。

有什么建议吗?

更新: 网址是 /companies/1/employees/2。当我单击链接时,ember 构造此 url 时,不会执行对模型的请求。当我刷新浏览器页面时,会触发请求。这是一种比较典型的体验,因为在 url 未更改时不会触发模型调用。但奇怪的是,它改变了,仍然没有模型请求......

提前致谢, 赛拉斯

【问题讨论】:

  • /templates/companies/companydetail/employees/employees/employeedetail.hbs 这应该是/templates/companies/companydetail/employees/employeedetail.hbs
  • @kumkanillam 你是对的。这就是脚本所在的位置。这是问题中的一个错字。对不起!

标签: templates ember.js routes nested request


【解决方案1】:

使用companydetail.hbs 是正确的。 employeedetail.hbs 应该呈现到 companydetail.hbs 内的 {{outlet}} 中。确保在companydetail.hbs 中有一个{{outlet}}

【讨论】:

  • 嗯。我希望它在新页面上呈现,而不是在 companydetail 内部。我尝试了您的解决方案,但没有成功。奇怪的是:当我重新加载页面时,所有请求都是正确的。
  • 这是预期的。如果您 {{link-to}} 使用模型,则不会执行 model 挂钩,因为您已经拥有模型。如果您不想嵌套模板,请不要嵌套路由。
  • 感谢您的解释!我的代码现在正在运行:我将 {{link-to}} 从 {{ ... model employee }} 更改为 {{ ... model.id employee.id}} 这样不是传递模型而是传递 id并触发请求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
  • 1970-01-01
  • 1970-01-01
  • 2017-06-07
  • 2017-11-15
相关资源
最近更新 更多