Можно ли передавать параметры следующим образом? Мне нужно передать некоторую информацию, которая не является частью самой модели.Передача параметров для сохранения()
myModel.save({site : 23})
Можно ли передавать параметры следующим образом? Мне нужно передать некоторую информацию, которая не является частью самой модели.Передача параметров для сохранения()
myModel.save({site : 23})
Это возможно, если вы:
serializeIntoHash
.Например:
App.Model = DS.Model.extend({
//...
site: DS.attr('number', { serialize: false })
});
App.ModelSerializer = DS.RESTSerializer.extend({
serializeIntoHash: function(hash, type, record, options) {
this._super(hash, type, record, options);
Ember.merge(hash, {
'site': record.get('site')
});
}
});
Смотрите эту comment, это правильный путь для достижения этой цели.
You can pass options as of Ember Data 2.2. Тем не менее, вы должны помнить, чтобы передать свои параметры под свойством adapterOptions
. Например,
myModel.save({
adapterOptions: {
site: 23
}
});
Внутри любой из DS.Store#findAll
, DS.Store#findRecord
, DS.Store#query
, DS.Model#save
и DS.Model#destroyRecord
, один из параметров должны теперь иметь adapterOptions
. В случае DS.Model#save
, вы можете переопределить updateRecord
в адаптере:
export default DS.Adapter.extend({
updateRecord(store, type, snapshot) {
// will now have `snapshot.adapterOptions`.
// ...
}
});
Точно, что мне нужно. благодаря –
Где сайт взялось? Это метаданные? Изменено ли это на контроллере? Как это не определено на модели – IgorT
@IgorT, сайт представляет собой предыдущий сайт, принадлежащий модели. У меня есть и другие причины для этого, я использую java/spring backend, а параметры прохождения позволяют мне различать метод сохранения цели. – jax
@IgorT У меня одинаковые потребности: некоторые контекстные параметры нужны бэкенду ... –