6

モデルをコレクションに追加するときに、モデルをコレクションに追加するエレガントな方法を探しています。バックボーンのソース コードには、unshiftそれを行う方法がありますが、addモデルをコレクションに追加する方法は複雑すぎて単純に拡張できません。写真とツイートに依存するスライド ショーを作成しており、常に最新のものを一番上に、最も古いものを最後に表示する必要があります。私の問題の単純化:

アプリの初期化、API 呼び出しの戻り値:

apple, banana, lemon

つまり、apple が最新のスライドです。コレクションが構築されます。

apple, banana, lemon

間隔の後、API 呼び出しは、新しい果物があるかどうかを確認します。結果は次のとおりです。

orange

コレクション追加モデル:

(apple, banana, lemon), orange

それは私が望んでいることではありません。オレンジが一番新しい果物で、その次がリンゴです。ただし、この場合、追加する前に最初のコレクションを逆にし、スライドを描画するときに再度逆にすることができました。さて、物事はより複雑になります(明確にするために括弧を追加しました):

さらに多くの果物の API 呼び出しチェック:

pineapple, kiwi

コレクションは、新しいモデルを 1 つずつ追加します。

((apple, banana, lemon), orange), pineapple, kiwi

新しいものから古いものまで、私のコレクションは次のようになります。

((not so old, older, oldest), pretty new), brand new, new

これはまったく意味がありません:)

もちろん、API の応答を変更することで作業が楽になる可能性がありますが、現在のところ、それはオプションではありません。また、応答内のアイテムの順序が新しい - > 古いので、それは問題ではありません。

unshiftこれに対するすぐに使える解決策を見つけることができませんでした。また、バックボーン ソースの一部を新しいモデルに複製することによって、物事を過度に複雑にしたくありません。提案?ありがとう!

4

1 に答える 1

5

モデルに何らかの日付や時刻が関連付けられている場合、または実際に他の種類の順序付けがある場合(必要に応じて手動で追加できる可能性があります)、コレクションにcomparator関数を実装することでコレクションを並べ替えることができます。見る:

http://backbonejs.org/#Collection-comparator

于 2012-11-01T14:19:45.007 に答える