Ответ 1
Установите shouldReloadAll() { return true; }
в адаптер приложения, и предупреждение исчезнет, а текущее поведение по умолчанию - то же самое.
В момент этого вопроса я запускаю последние версии Ember и Ember Data.
Я работаю с DS.RESTAdapter, вызывающим /places
следующим образом:
this.store.findAll('place');
Модель имеет только атрибут name name: DS.attr('string')
JSON:
{
places: [
{
id: 1,
name: "San Francisco"
},
{
id: 2,
name: "Havana"
}
]
}
Я сделал шаблон и с соответствующим each
, и все появилось и работает до сих пор, но я получаю предупреждения об устаревании, которые сообщают следующее:
DEPRECATION: поведение по умолчанию shouldReloadAll будет меняться в Ember Data 2.0 всегда возвращает false, если есть хотя бы один запись "destination" в магазине. Если вы хотите сохранить текущее поведение, пожалуйста, переопределите shouldReloadAll в вашем адаптер: приложение и вернуть true.
Я не знаю точно, какой лучший подход для решения этого предупреждения. Я новичок в ember, поэтому любое дальнейшее объяснение будет прекрасным. Спасибо заранее.
Установите shouldReloadAll() { return true; }
в адаптер приложения, и предупреждение исчезнет, а текущее поведение по умолчанию - то же самое.
Чтобы ответить на вопрос @Эрик Уилсон:
Я вручу награду за ответ, содержащий необходимые детали для переопределения функции shouldReloadAll. Другими словами, я не может понять, что делать с этими фрагментами кода.
Первое использование:
ember g adapter application
Затем перейдите к вновь созданному app/adapters/application.js
и замените код на:
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({
shouldReloadAll() {
return true;
}
});
Вы закончили. Демо на Ember Twiddle.
Возвращая true
из shouldReloadAll
функция в основном инструктирует Ember повторно выбирать модели каждый раз, когда вы вызываете метод findAll
и запрос на пожар на ваш сервер.
Если вы знаете, что эти данные не будут меняться, например, в течение следующих 2 минут, вы можете реализовать некоторую логику в shouldReloadAll
, которая помешала бы Эмберу отпустить ненужный запрос (например, проверить, прошло ли 2 минуты, если нет предотвратить запрос - return false
).
См. DS.Adapter.shouldReloadAll
документацию метода для большего контекста.
Чтобы соответствовать новому поведению по умолчанию, переопределите shouldReloadAll
следующим образом:
function shouldReloadAll( store, snapshot ) {
return !store.peekAll( snapshot.type.modelName ).length
}