14

我有一个用户模型,它具有纬度和经度属性,用于在地图上显示当前用户位置。

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-data 是否支持这种用例?我找不到任何具有此功能的示例。我想我需要用 setInterval 覆盖 User 类的 find 方法,这是正确的方法吗?

谢谢

4

3 回答 3

9

编辑:请参阅 Dmitri Zagidulin 的回答。

所以我想通了。现在我只需要覆盖模型上的 didLoad 方法,将来我可能需要更复杂的解决方案,但这对于现在来说已经足够了。

didLoad: function(){
  var self = this;
  setInterval(function() {self.reload()}, 5*60*1000); //every 5 minutes
}

如果有人需要重新加载更多模型,好的解决方案是将其实现为 Mixin。

于 2013-03-27T15:53:10.360 回答
8

对于那些现在遇到这个问题的人——不要使用setInterval,它已被证明会导致严重的内存泄漏。

改用 Ember 自己的Ember.run.later

也可以看看:

编辑:2019 年 2 月 3 日 - 更新断开的链接。

于 2015-07-29T21:44:43.747 回答
5

该模型.reload()现在有一个方法,您可以在setInterval回调中使用它。见https://stackoverflow.com/a/14183507/363073

PS 观看#545

于 2013-03-25T18:16:59.423 回答