在ember.js中的save方法上定制PUT路由



我想手动指定一个PUT路由来保存我的模型。烬有可能吗?

例如,我有一个会话模型,当我调用conversation.save()时,我不希望它搜索PUT conversations/someMail/conversations/:id,而是手动告诉ember使用PUT/conversations/:id。

这是我的命名空间:

App.ApplicationAdapter.reopen({
namespace: 'conversations/someEmail'
});

路由器:

App.Router.map(function(){
//Routing list to raw namespace path
this.resource('conversations', { path : '/' }, function() {
    this.resource('conversation', { path : '/:conversation_id'});
});
});

模型:

App.Conversation = DS.Model.extend({
readStatus: DS.attr('string'),
url: DS.attr('string'),
status: DS.attr('string'),
lastMessage: DS.attr('string'),
createdAt: DS.attr('string'),
timeAgoElement: DS.attr('string'),
customer: DS.belongsTo('customer'),
content: DS.attr('array'),
});

您可以通过重写buildURL:

来定制适配器中的URL。
App.ApplicationAdapter.reopen({
    buildURL: function(type, id, record, requestType) {
        if (type === 'conversation' && requestType === 'PUT') {
            return '/conversations/' + id;
        }
        return this._super.apply(this, arguments);
    }
});

它的确切签名取决于你的ember版本,所以在你的应用程序中尝试一下。

最新更新