Ember.js:如何将计算属性用作路由

时间:2014-06-02 20:05:57

标签: javascript ember.js ember-data

我对Ember.js很陌生,正在建立一个应用程序以获取一些Ember印章。我想在我的一个模型中使用计算属性作为路线,但似乎某些东西没有正常工作。我顺便使用了FIXTURES。

我想要实现的目标是/peeps/john-smith而不是/peeps/1

我的模型设置如下:

App.Peep = DS.Model.extend({
    firstName: DS.attr('string'),
    lastName: DS.attr('string'),
    slug: function(){
        this.get('firstName').toLowerCase() + '-' + this.get('lastName').toLowerCase();
    }.property('firstName', 'lastName')
});

我的路由器设置如下:

App.Router.map(function(){
    this.resource('peep', { path: '/peeps/:peep_slug'});
});

App.PeepRoute = Ember.Route.extend({
    model: function(params){
        return this.store.find('peep', params.peep_slug);
    },

    serialize: function(model){
        return { peep_slug: model.get('slug') };
    }
});

当我在浏览器中导航到/peeps/john-smith时,我会在控制台You made a request for a peep with id john-smith中收到此警告。

我有什么遗失的吗?

1 个答案:

答案 0 :(得分:0)

默认情况下,它会按id param进行搜索,因此您可以更改适配器以使其按slug进行搜索,或尝试将id添加为Ember.computed.alias('slug')