我有博客路线和博客路线。
路由器:
App.Router.map(function () {
this.resource('blog', function () {
this.route('post', {path: ':id/:title'});
});
});
路线:
App.BlogRoute = Ember.Route.extend({
model: function () {
return this.store.find('BlogPost');
}
});
App.BlogPostRoute = Ember.Route.extend({
model: function (params) {
return this.store.findById('BlogPost', params.id);
},
serialize: function (model, params) {
return {
id: model.get('id'),
title: Ember.String.dasherize(model.get('title'))
}
}
});
在我父亲blog
路线的Handlebars模板中,当我点击{{outlet}}
之一时,我的{{#link-to}}
工作正常。
我想要做的是默认情况下呈现当用户转到/blog
路线时最新(最高ID)的博文。
我找到this question并尝试了这个结果,但无济于事:
App.BlogIndexRoute = Ember.Route.extend({
redirect: function () {
var latest = 3;
this.transitionTo('blog.post', {id: latest});
}
});
(latest
只是this.model.pop()
的占位符或其所需的任何内容。)
我无法弄清楚如何使用模型中的数据加载子路径。
答案 0 :(得分:2)
您可以使用modelFor
App.BlogIndexRoute = Ember.Route.extend({
redirect: function () {
var blogs = this.modelFor('blog');
if(blogs.get('length')){
this.transitionTo('blog.post', blogs.get('firstObject')); // or blogs.findBy('id', 123)
}
}
});