Определение buildURL в зависимости от того, какие свойства изменились
Я хотел бы переопределить свой buildURL в зависимости от того, какие свойства изменились на той же модели. Например, если статус изменился, я хотел бы перейти на определенный маршрут, а если изменился субпользователь, я хотел бы перейти на другой маршрут.
Пример:
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 ответ:
Вам нужно настроить свой адаптер
conversation
, в частности методurlForUpdateRecord
.Исходный метод выглядит следующим образом:
urlForUpdateRecord: function(id, modelName, snapshot) { return this._buildURL(modelName, id); },
В этом методе необходимо изучить снимок и соответствующим образом настроить URL-адрес.
В последней версии Ember Data было введено свойствоchangedAttributes . Похоже, это то, что вам нужно.
Удачи!