2

私のバックエンドによって公開された次のクエリを使用します。

  • GET /api/foos
    • マスターリスト内での表示に適した、すべての Foo のリストを返します
  • GET /api/foos/:foo_id
    • 詳細ビュー内での表示に適した、より詳細な情報を含む単一の Foo を返します

私のフロント エンドでは、左側に Foos のリストが表示され、そのうちの 1 つがクリックされると、右側 (アウトレット内) のアウトレットにその詳細バージョンが表示されます。

{{#each foo in model}}
    {{#link-to 'foo' foo}}{{foo.name}}{{/link-to}}
{{/each}}
{{outlet}}

私は自分のモデルを格納するために ember-model を使用しており、それらが呼び出されたときに上記のバックエンド API を正しくヒットするように とフックを実装ました。App.Foo.adapterfindfindAll

私のアプリが最初にGET /api/foos(via findAll) にヒットし、次にユーザーが Foo をクリックすると、ember-model はフックGET /api/foos/:foo_idを呼び出さないためヒットしません。findその特定のモデルが既にキャッシュにあることを認識するためです。 .

これは素晴らしいことです。なぜなら、既にメモリにあることがわかっているのに、もう一度フェッチする必要があるからです。

しかし、私のアプリでは、この仮定は不十分です。その Foo のフル バージョンを取得したかどうかをさらに確認する必要が!!aFoo.get('propertyOnlyInDetailedVersion')あります。

これを行うにはどうすればよいですか - 以前にフェッチされたオブジェクトを ember-model に再フェッチさせるにはどうすればよいですか?

4

2 に答える 2

1

これは以前は既知の問題でしたが、最近修正されました。

https://github.com/ebryn/ember-model/pull/297 (ckung のコメント)からそのまま引用

開発者は、Ember.Model を拡張するクラスで「transient: false」を定義できます。これにより、キャッシュ チェックがスキップされます。

コミット: https://github.com/ckung/ember-model/commit/dc46171d2121630e62a130d58dd6b709c6c00541

関連するバージョンに更新するember-modelと、これを機能させることができます。

--

編集: 申し訳ありませんが、次のブロック テキストが最後の編集になると思っていましたが、残念ながらそうではありませんでした。

だから私の考えは今のようなことをすることですCachedModel extends LiveModel extends Ember-Model。次に、それぞれ と を設定transientします。truefalse

于 2014-03-07T04:09:31.330 に答える