Я не уверен, что мне здесь не хватает, но после отправки save()
запроса API я обнаружил, что список в шаблоне не обновляется.Как обновить данные Ember после создания с помощью JSONAPI?
Я использую адаптер JSONAPI, и после того, как создание было завершено, он возвращает соответствующий ответ на полезную нагрузку после создания, содержащий всю новую информацию, которую я вижу, фактически обновляет модель note
в инспекторе Ember правильно с информацией из полезной нагрузки.
Я также попытался добавить в строках, как:
get(this, 'notes').pushObject(note);
и в качестве альтернативы:
get(this, 'notes').addObject(note._internalModel);
, который я нашел из SO и Поста форумах, но они оба возвращают предупреждение:
The result of a server query (on [email protected]:note:) is immutable.
Из того, что я читал, я думал, что адаптация JSONAPI r должен обрабатывать это (что похоже, что это изнутри Ember Inspector), но я просто не вижу никаких изменений, отраженных в шаблоне.
У меня есть следующие:
route.js
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
return Ember.RSVP.hash({
contact: this.store.findRecord('contact', params.contact_id),
notes: this.store.query('note', {filter: {contact_id: params.contact_id}}),
note: this.store.createRecord('note'),
});
},
setupController(controller, model) {
controller.set('contact', model.contact);
controller.set('notes', model.notes);
controller.set('note', model.note);
}
});
controller.js
import Ember from 'ember';
const {Controller, set, get} = Ember;
export default Controller.extend({
actions: {
// Note CRUD..
store() {
let note = get(this, 'note');
set(note, 'contact', get(this, 'contact'));
note.save();
this.send('reset');
},
reset() {
set(this, 'note', this.store.createRecord('note'));
}
},
});
template.hbs
{{#em-form model=note action="store"}}
{{em-text rows="3" property="content" label="Note" placeholder="Enter a note..."}}
<button type="button" class="btn btn-default" {{action "reset"}}>Reset</button>
{{/em-form}}
<ul>
{{#each notes as |note|}}
<li>{{note.content}}</li>
{{/each}}
</ul>
Кроме того, не уверен, что это актуально, но в Ember Inspector, даже если модель заполнена новым идентификатором и временными метками и т. Д. С сервера, я заметил эту разницу между новым элементом и существующими?
Новое: <[email protected]:note::ember1376:null>
(обратите внимание на нуль)
Существующее: <[email protected]:note::ember876:48>
..etc
Итак, я добавил это также, но теперь я получаю: ' API фильтра был перемещен в плагин. фильтровать с использованием флага среды или использовать альтернативу, вы можете посетить страницу аддона-фильтра фильтра данных. « Когда я иду в этот плагин, он рекомендует не использовать его из-за ожидающего оттока? – SamSebastian
Это привело меня к решению ниже – SamSebastian