Перезагрузка модели Ember в интервале
У меня есть модель User, которая имеет свойства широты и долготы, которые используются для отображения текущего местоположения пользователя на карте.
App.User = DS.Model.extend({
firstName: DS.attr('string'),
lastName: DS.attr('string'),
email: DS.attr('string'),
jobs: DS.hasMany("App.Job"),
latitude: DS.attr('number'),
longitude: DS.attr('number'),
measuredAt: DS.attr('date'),
});
Каков наилучший способ автоматического определения свойств широты и долготы с сервера на каждый заданный интервал? Поддерживает ли ember-данные такой вариант использования? Я не могу найти образцы с этой функциональностью. Я думаю, мне нужно будет переопределить метод поиска для класса User с setInterval в нем, правильно ли это?
Спасибо
Ответы
Ответ 1
Для тех, кто сталкивается с этим вопросом сейчас - не используйте setInterval
, это, как было показано, вызывает серьезные утечки памяти.
Вместо этого используйте Ember, собственный Ember.run.later.
Смотрите также:
Редактировать: 3 февраля 2019 - Обновление неработающих ссылок.
Ответ 2
EDIT: см. ответ Дмитрия Загидулина.
Итак, я понял это. На данный момент все, что мне нужно, это переопределить метод didLoad на модели, в будущем мне, вероятно, понадобится более сложное решение, но на данный момент это достаточно.
didLoad: function(){
var self = this;
setInterval(function() {self.reload()}, 5*60*1000); //every 5 minutes
}
В случае, если кому-то нужно перезагрузить больше моделей, хорошим решением было бы реализовать это как Mixin.
Ответ 3
Теперь модель имеет метод .reload()
, который вы можете использовать в обратном вызове setInterval
. См. fooobar.com/info/209106/...
P.S. Смотрите # 545.