#javascript #ember.js
#javascript #ember.js
Вопрос:
У меня есть маршрут в моем приложении Ember, который возвращает набор записей в привязке модели следующим образом:
model() {
return this.store.findAll('pending-post');
}
Предполагая, что это возвращает 10 записей, я могу видеть 10 записей на вкладке data в Ember Inspector и при входе в систему {{model}}
. На вкладке сеть также показано, что в объекте данных возвращен массив из 10 записей.
Затем я перехожу к другому маршруту в своем приложении и редактирую сообщение, чтобы оно больше не ожидало рассмотрения. Это изменение сохраняется в серверной части.
Когда я возвращаюсь на панель мониторинга, перехват модели запускается снова. Запрос на вкладке сеть теперь возвращает массив из 9 объектов, поскольку API возвращает только 9 элементов.
Однако на вкладке data в Ember inpector по-прежнему отображаются 10 элементов, и в {{model}}
все еще есть 10 элементов.
Каков наилучший способ заставить Ember data удалить элемент, который не был возвращен API во второй раз?
Комментарии:
1. Вы уверены, что
pending-post
это сущность, а не только подмножествоpost
? Ваш вариант использования был бы намного проще обработанthis.store.query('post', { filter: { pending: true } })
или чем-то подобным.2. В этом случае pending-post является его собственной сущностью, поэтому параметры запроса не помогли бы, но я понимаю вашу точку зрения на этот вариант использования.
Ответ №1:
Сохранение записи в серверной части возвращает Promise
. Следовательно, store.unloadRecord()
может использоваться в then
обработчике для удаления записи из хранилища.
record.save().then(function(){
this.store.unloadRecord(record);
});
Или перед запросом модели удалите все записи из хранилища.
model()
{
this.store.unloadAll('pending-post');
return this.store.findAll('pending-post');
}
Название модели может быть выделено как верблюжьим шрифтом, так и пунктирным.