Ember model reloading in interval

前端 未结 3 1462
无人共我
无人共我 2021-02-13 07:28

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         


        
相关标签:
3条回答
  • 2021-02-13 07:42

    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.

    0 讨论(0)
  • 2021-02-13 07:54

    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:

    • SetTimeout vs. Ember.run.later in an ember app?
    • http://guides.emberjs.com/v1.12.0/cookbook/working_with_objects/continuous_redrawing_of_views/
    • https://www.slideshare.net/yoranbe/presentation-31170160

    Edit: Feb 3, 2019 - Update broken links.

    0 讨论(0)
  • 2021-02-13 08:06

    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.

    0 讨论(0)
提交回复
热议问题