2

簡単な概要画面のために、App.Location.find() を実行するコントローラーをセットアップするルートを開発しました。

App.LocationsIndexRoute = Ember.Route.extend({

  setupController: function(controller) {
    controller.set('content', App.Location.find());
  },

  renderTemplate: function() {
    this.render('locations.index',{into:'application'});
  }

});

私は単純に、これはストアに行ってすべてのレコードを取得し、レコードの最新のビューを表示するだけだと単純に想定していました。

どうやらそうではありません....

  • 外部プロセスがデータベースからのレコードの削除を開始すると、App.Location.find() はこれらの削除されたレコードを返し続けます。(ただし、REST 呼び出しでは表示されなくなりました)
  • 外部プロセスがデータベースへのレコードの追加を開始すると、 App.Location.find() がそれらを取得します。
  • Ember アプリ自体でレコード フォームを削除すると、モデルは正しく更新されます。

Ember アプリでこれをどのように処理すればよいですか? データベースにあるものすべてを最新の状態で表示したいと考えています。現在、最新のビューを取得するには、ページを更新する必要があります (F5)。linkTo ヘルパーを使用すると、古いデータが表示されます。

これは、私が EmberJS で完全に見逃していたもう 1 つのささいなことのようです。なぜそのように振る舞うかは、ドキュメントのどこかに記載されていますか?この動作の背後には有効な哲学があると思います。

私の概要画面は、単に最新のデータを表示することに関心があります。レコードが DB に存在しなくなった場合、モデルはそのレコードを返すべきではありません。

この問題が発生しているサンプル プロジェクトを Github に追加しました。

4

2 に答える 2

2

find() を呼び出す前に、ストアからすべてのデータをアンロードしてみてください。

this.store.unloadAll('widget');
this.store.find('widget');

これにより、ストアが完全に更新され、サーバー上の内容が反映されます。

于 2014-05-15T18:16:00.083 に答える
0

App.Location.find() の代わりに App.Location.query() を試しましたか?

于 2013-06-18T08:00:35.303 に答える