5

私はいくつかの調査を行ってきましたが、私の特定のユースケースの例は見当たりません。したがって、一般的なアーキテクチャのアドバイス/リソースをいただければ幸いです。

アドレス帳を作成しています。

  • ユーザーは連絡先とグループを作成します。
  • 作成された連絡先は一般プールに保存されます。
  • 連絡先は複数のグループに関連付けることができます。
  • 連絡先が更新されると、すべてのグループにわたって更新されます。
  • 連絡先が一般プールから削除されると、関連付けられているすべてのグループから削除されます。

連絡先とグループ用に個別のコレクションを作成するのは簡単でしたが、今は行き詰まっています。

Backbone-associationsまたはBackbone-relationalまたはnesting.jsでさえ、私が探しているものを提供するようです。バックボーン アソシエーションは、バックボーン リレーショナルよりもパフォーマンスが高いようです。プラグインを使用した経験のある人はいますか? より簡単なハンドコード ソリューションはありますか?

4

2 に答える 2

1

まず第一に、あなたは標準的なバックボーンの方法で解決策を見つけることを試みるべきであり、それができない場合にのみ-あなたはサイドアプリケーションを取るべきです。

アプリケーションに関しては、解決策があります。連絡先のコレクションとグループのコレクションは、2つの異なる別々のコレクションに保存する必要があります。連絡先コレクション内のすべてのモデルには、そのグループ要素への「リンク」が必要です。たとえば、グループモデルのみを含む追加のフィールド「グループ」(ご存知の場合、JavaScriptは同じオブジェクトを操作するときにリンクを操作するため、軽量です)

このような連絡先のコレクションがあると、グループでソートされたこのコレクションを使用し(このためのコレクションコンパレータメソッドを実装)、レンダリングに役立つオブジェクトを返す特別なメソッドを作成できます。例えば:

{"group1": elements_of_group1, ...}

また、連絡先を削除したときの副作用として、すでに一貫したリストがあります。

于 2013-01-19T14:06:59.573 に答える
1

グループとコレクションを表すバックボーン モデルはありますか。グループには、contactIds の配列を含めることができます。

var Contact = Backbone.Model.extend({
    defaults: {
        name: "SomeName",
        phone: "1234567890",
        ...
    }
});

var Group = Backbone.Model.extend({
    defaults: {
       name: "someName",
       contactIds: [1, 2, 3, 4]
    }
});

var Contacts = Backbone.Collection.extend({
    model: Contact
});

特定のグループに保存されている連絡先の詳細にアクセスする必要がある場合は、次のようにすることができます。

contacts.get(id); 

CRUD 操作の個々の連絡先の情報を返します。同様に、グループのコレクションを維持できます。

于 2013-11-04T20:41:49.477 に答える