Ember.js 如何定义在Ember中击中父对象时要渲染的嵌套管线
我有一个博客路线和一个博客帖子路线 路由器:Ember.js 如何定义在Ember中击中父对象时要渲染的嵌套管线,ember.js,Ember.js,我有一个博客路线和一个博客帖子路线 路由器: App.Router.map(function () { this.resource('blog', function () { this.route('post', {path: ':id/:title'}); }); }); 路线: App.BlogRoute = Ember.Route.extend({ model: function () { return this.store.fin
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'))
}
}
});
在我的家长博客
路线的把手模板中,我有一个{{outlet}
,当我单击其中一个{{{outlet}}
链接时,它可以正常工作
我要做的是,默认情况下,当用户转到/blog
路径时,呈现最新(最高ID)的博客文章
结果,我发现并尝试了这一点,但无济于事:
App.BlogIndexRoute = Ember.Route.extend({
redirect: function () {
var latest = 3;
this.transitionTo('blog.post', {id: latest});
}
});
(latest
只是this.model.pop()
或任何需要的内容的占位符。)
我只是不知道如何准确地用模型中的数据加载子路由。您可以使用
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)
}
}
});
啊,太棒了。而且非常简单。谢谢:)