javascript - Ember 在查看子路由时隐藏父模板

标签 javascript ember.js handlebars.js

我正在使用 Ember 为我的网站制作一个简单的博客。

我的路线:

Router.map(function() {
  this.route('home', { path: '/' });
  this.route('blog', function() {
    this.route('post', {path: '/:post_id'});
  });
});

我想要它,所以当我单击 /blog 中的帖子并结束在 /blog/:post_id 时,我隐藏了 blog 的内容。 hbs 文件,只显示blog/post.hbs 内容。

我尝试在我的 post.js 路由文件中明确指定渲染模板,但事情一直以同样的方式工作。

export default Ember.Route.extend({
  model: function(params) {
    return this.store.findRecord('post', params.post_id, { reload: true });
  },
  renderTemplate: function() {
    this.render('blog/post');
  }
});

阅读此处的文档并没有让我产生任何其他想法。

https://guides.emberjs.com/v1.13.0/routing/rendering-a-template/

我是否从根本上错误地使用了 Ember?如果我想隐藏父模板内容,我的帖子 URL 不应该是 Blog 的子路径吗?

最佳答案

抱歉,@remi 的回答完成了工作,但根据惯例,这不是正确的。

当你创建这样的东西时:

Router.map(function() {
  this.route('blog', function() {
    this.route('post', {path: '/:post_id'});
  });
});

隐式创建

Router.map(function() {
  this.route('blog', function() {
    this.route('index', { path: '/' }); // <------ this one
    this.route('post', {path: '/:post_id'});
  });
});

因此,如果您有嵌套路由器,但不想嵌套模板,请将博客模板(和路由)重命名为 index.html。这将类似于重命名:

使用 POD

app/blog/route.js -> app/blog/index/route.js

app/blog/template.hbs -> app/blog/index/template.hbs

没有 POD

app/routes/blog.js -> app/routes/blog/index.js

app/templates/blog.hbs -> app/templates/blog/index.hbs

这记录在 Official guide 上(链接为最新版本,但也适用于旧版本)

关于javascript - Ember 在查看子路由时隐藏父模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34812757/

相关文章:

json - 如何在 Wiremock 中删除每个循环中的最后一个逗号

javascript - 在express.js中创建使用http DELETE动词的href链接

javascript - 大于运算符在 JavaScript 中的 console.log 内给出错误响应

javascript - 如何在条件下显示 anchor 标记以及单击 anchor 时显示内容,否则不显示( Angular 新手)?

javascript - laravel 无法设置 cookie

model-view-controller - Ember.js - 创建一个多步骤向导 - 如何?

javascript - 如何从wordpress中的帖子页面id获取acf的图库图片url

javascript - 我在 Emberjs 中的虚假案例陈述正在爆炸。正确的方法是什么?

ember.js - 模板加载时的 Ember 调用操作

if-statement - Handlebars : native inline conditional expression or equivalent?