Ember 查看子路由时隐藏父模板
Ember hide parent template when viewing sub-route
我正在为我的网站创建一个简单的博客 Ember。
我的路线:
Router.map(function() {
this.route('home', { path: '/' });
this.route('blog', function() {
this.route('post', {path: '/:post_id'});
});
});
我想要它,所以当我单击 /blog
中的 post 并在 /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 是不是错了?如果我想隐藏父模板内容,我的 post URL 不应该是 Blog 的子路径吗?
我不知道,如果你不想嵌套内容,为什么还要嵌套路由。无论如何...
如果您只想 url 反映您的嵌套,试试这个:
Router.map(function() {
this.route('home', { path: '/' });
this.route('blog', { path: 'blogs' });
this.route('post', { path: 'blog/:post_id'});
});
抱歉,@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 上有记录(link 适用于最新版本,但也适用于旧版本)
我正在为我的网站创建一个简单的博客 Ember。
我的路线:
Router.map(function() {
this.route('home', { path: '/' });
this.route('blog', function() {
this.route('post', {path: '/:post_id'});
});
});
我想要它,所以当我单击 /blog
中的 post 并在 /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 是不是错了?如果我想隐藏父模板内容,我的 post URL 不应该是 Blog 的子路径吗?
我不知道,如果你不想嵌套内容,为什么还要嵌套路由。无论如何...
如果您只想 url 反映您的嵌套,试试这个:
Router.map(function() {
this.route('home', { path: '/' });
this.route('blog', { path: 'blogs' });
this.route('post', { path: 'blog/:post_id'});
});
抱歉,@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 上有记录(link 适用于最新版本,但也适用于旧版本)