0

バックボーン コレクションに少し問題があります。6 つのモデルを表示したいだけで、常に最新の 6 つです。 CollectionBinder (Backbone.ModelBinder) を使用してコレクションをレンダリングおよび表示し、RailsFayeSubscriber を使用してそれらをサーバーと同期します。

問題は、コレクション 6 モデルを常に大きく保つ方法がわからないことです。this.on("add") を追加しようとしましたが、そこに .first(6) を使用して必要な 6 つのモデルを保持しましたが、問題は、CollectionBinder または RailsFayeSubscriber にも add-trigger があり、私をスローすると思うことですコレクション内の欠落モデルに関するエラー。

最良の方法は、常にモデルをソートするコンパレーターのようなものを用意することですが、この場合、常に 6 つのモデルを大きく保つある種のアクティブ フィルターを使用します。

何か案は?

4

2 に答える 2

1

1つの(ちょっとハックな)解決策は、フローを中断することです。したがって、現在、次のものがあります。

  1. コレクションが追加されます
  2. ハンドラーがオフになり、コレクションが「めちゃくちゃ」になります
  3. ライブラリのハンドラーの 1 つがオフになり、動揺します。

あなたが望むものは:

  1. コレクションが追加されます
  2. ライブラリのハンドラーの 1 つがオフになり、ウィッグアウトしません
  3. あなたのコードは消える

上記を実現するために Backbone のイベント システムを操作する方法がいくつかあると思われますが、ごまかすこともできます。

  1. コレクションが追加されます
  2. ハンドラーがオフになり、1 ミリ秒でコレクションを「台無しにする」タイムアウトを設定します ( window.setTimeout(_.bind(this.limitTo6, this), 1))
  3. ライブラリのハンドラーの 1 つがオフになり、ウィッグアウトしません
  4. タイムアウト (通常のコード フローが完了してから 1 ミリ秒) がオフになり、ライブラリをごまかすことなくコレクションを台無しにします
于 2012-07-20T01:05:31.580 に答える
0

この投稿では、イベントアグリゲーターアプローチを使用しました

ひねりを加えたのは、アグリゲーターをビューに追加する代わりに、コレクションに追加することです。6 つのアイテムを持つ「ビュー モデル」として機能する 2 つ目のコレクションを作成します。その 2 番目のコレクションは、完全なコレクションの追加/リセット イベントにバインドできます。その後、イベント ハンドラーはバインドされたコレクションにデータを入力し、リセット イベントを発生させることができるため、ビュー コードは常に同じように表示されます。

これは、データ操作とより薄いビューに慣用的なバックボーンの焦点を維持しているようです。

于 2012-07-20T02:31:44.050 に答える