Reputation: 445
I have a User model, which has latitude and longitude properties, which are used to show current user location on map.
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'),
});
What is the best way to autoupdate latitude and longitude properties from server every given interval? Does ember-data support this kind of use case? I can't find any samples with this functionality. I think I will need to override find method for User class with setInterval in it, is this the right approach?
Thanks
Upvotes: 14
Views: 9731
Reputation: 1115
For those who are coming across this question now -- don't use setInterval
, it's been shown to cause serious memory leaks.
Use Ember's own Ember.run.later instead.
See also:
Edit: Feb 3, 2019 - Update broken links.
Upvotes: 8
Reputation: 445
EDIT: Please see Dmitri Zagidulin's answer.
So I figured it out. For now all I need was to override didLoad method on model, in future I will probably need more complex solution, but this is adequate for now.
didLoad: function(){
var self = this;
setInterval(function() {self.reload()}, 5*60*1000); //every 5 minutes
}
In case someone needs to reload more models, good solution would be to implement this as Mixin.
Upvotes: 9
Reputation: 1833
The model has a .reload()
method now, which you could use in a setInterval
callback. See https://stackoverflow.com/a/14183507/363073
P.S. Watch #545.
Upvotes: 5