今日はまだエバーでページネーションを処理する方法。
最初に、findAll
リクエストのより単純なものを見てください。
これは.query({page:3})
のようなもので行われますが、いくつかの問題につながることができます。
- これは古典的なページネーションのための良い解決策ですが、無限スクロールするために、あなたはまだ手動で結果をマージする必要があります。
- 結果はキャッシュされないため、改ページされたリストで前後に移動すると多くのクエリーが発生します。場合によってはリストが編集可能な場合は必要ですが、しばしばそうではありません。
私はちょっとaddon called ember-query-cache
をビルドして、ストアにフックして、クエリ結果をキャッシュすることができます。非常に短いデモは利用可能ですhere。
今、私たちは、私は正直にあなたがエンバー・データ自体からより良いサポートを持ってまで、トップレベル.query
を使用することをお勧めします関係について話している場合:
store.query('task', { person: get(person, 'id'), page: 3 }
それについて悪い何もありません。あなたはあなたの結果を得て、他の方向に関係を持っています。キャッシュを必要としない限り、ember-dataにハッキングすることなく動作します。キャッシングが必要な場合は、アドオンで行ったハッキングがごくわずかです。
まだember-dataが完全にJSONAPIになることを願っています。ページネーションが必要です。私はAPIの視点から考えて、最も良いのは、関係によって返されたManyArrayの次のページと前のページを求める能力を持つことだと思います。それはJSONAPIと共に、次のリンクと前のリンクが提供されます。しかし、これを実現するには、多くのプロジェクトで正常に使用されたトップレベルの.query
を大幅に改善することなく、ember-dataを深く掘り下げなければなりません。
出典
2016-05-17 10:30:51
Lux
あなたはこれに対して良い解決策を見つけましたか? – RyanJM