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

編集:ドミトリ・ザギドゥリンの答えをご覧ください。

だから私はそれを理解しました。今のところ必要なのはモデルの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 に答える