pinterest スタイルのレイアウトとその動作を皆さんが知っていることを願っています。
- 多くの(1000としましょう)製品のコレクションがあります
- ページの読み込み時に、そのコレクションのごく一部のみを表示します (つまり、最初の 20 個の製品)
- ユーザーが下にスクロールしてページの一番下に到達すると、次の 20 個の製品をレンダリングします
- ページは多くのクライアントによって表示され、それぞれに独自の一連の製品が表示されます
ボーナスタスク:
- Products コレクションが新しいアイテムを取得すると、ページの上部に表示されます (表示された製品リストの最初のアイテムとして)。
そのロジックを Meteor のようにプログラムする方法を考えています。ユーザー インターフェイスのコードは飛ばしましょう。私はビジネス ロジックだけに関心があります。
ProductsDisplayed コレクションをヘルパーとして考えています。これは空で、ページの読み込み時に 20 個の製品が読み込まれます。スクロール ポイントに到達すると、元の Products コレクションなどからさらに 20 個の製品を挿入します。
問題:
- クライアント間で異なる ProductsDisplayed コレクションを持つ方法、
- Products コレクションから次の 20 個の製品を要求し、前の製品を取得しない方法
しかし、おそらく ProductsDisplayed に関する全体的な考えは間違っています。私はあなたがどう思うか知りたいです!
アップデート!
Products コレクションのみを使用するようにアプローチを変更しました。
サーバ:
Meteor.publish "productsDisplayed", (number) ->
Products.find {},
limit: number
クライアント:
Meteor.autosubscribe ->
Meteor.subscribe "productsDisplayed", Session.get('productsDisplayedNumber')
スクロール ポイントに到達すると、セッション「productsDisplayedNumber」が 20 ずつ増加します。ただし、autosubscribe を使用すると、新しい要素だけでなく、テンプレート全体が再レンダリングされます。何か案は?