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)
        }
    }
});

啊,太棒了。而且非常简单。谢谢:)