根据已更改的属性定义buildURL

时间:2015-06-10 15:54:23

标签: ember.js ember-data

我想根据在同一型号上更改的属性重新定义我的buildURL。例如,如果状态改变了,我想PUT到某条路线,如果子用户改变了,我想把它推到另一条路线。

示例:

this.store.find('conversation', conv.id).then(function(conversation){
    conversation.set('status', 'opened');
    conversation.save();                    
});

这将使用某个PUT路线,并且:

this.store.find('conversation', this.get('selectedConv').id).then(function(conversation){
    conversation.set('subuser', subuser);
    conversation.set('url', subuser.get('email'));
    conversation.save();
});

即使在同一模型上进行了更改,也会使用另一条PUT路径。这一切都发生在控制器中。

1 个答案:

答案 0 :(得分:4)

您需要自定义conversation适配器,特别是urlForUpdateRecord方法。

原始方法looks是这样的:

urlForUpdateRecord: function(id, modelName, snapshot) {
  return this._buildURL(modelName, id);
},

在此方法中,您需要检查快照并相应地调整URL。

最新版本的Ember Data引入了changedAttributes属性。这似乎是你需要的。

祝你好运!