我有一个用户模型,它具有纬度和经度属性,用于在地图上显示当前用户的位置。
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方法,这是正确的方法吗?
由于
答案 0 :(得分:9)
所以我明白了。现在我只需要在模型上覆盖didLoad方法,将来我可能需要更复杂的解决方案,但现在这已足够了。
didLoad: function(){
var self = this;
setInterval(function() {self.reload()}, 5*60*1000); //every 5 minutes
}
如果有人需要重新加载更多模型,那么很好的解决方案就是将其作为Mixin来实现。
答案 1 :(得分:8)
对于那些现在遇到这个问题的人 - 不要使用setInterval
,它会被证明会造成严重的内存泄漏。
使用Ember自己的Ember.run.later代替。
另见:
编辑:2019年2月3日 - 更新损坏的链接。
答案 2 :(得分:5)
该模型现在具有.reload()
方法,您可以在setInterval
回调中使用该方法。见https://stackoverflow.com/a/14183507/363073
P.S。观看#545。