我正在使用 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/