私は、写真とアルバムを含むBackboneにマージされたコレクションを持っています。Backbone.js:同じIDを持つ複数のモデルを含むコレクション
これらを区別するために、フィールドtype
を追加しました。photo
またはalbum
です。私はコレクションを移入すると、私はCollection#model
方法
model: (attrs, options) ->
switch attrs.type
when 'album' then new App.Models.Album(attrs, options)
when 'photo' then new App.Models.Photo(attrs, options)
内の異なるモデルを作成する今、私は、同じIDを持つ写真やアルバムを追加し、マージでの結果(のは2
を言わせて)奇妙なバグをdiscoverdました。
私はこれをthese LOCのソースコードで追跡しました。バックボーン自体を作成することなく元に戻すことができるようです。私はそれを試しましたが、それはまたfails 35 testsです。
私は、私は1つ優れているそれらのどれかわからない、これを行うための4種類の方法を考えた:
- 私はIDに接頭辞を追加することができます。
photo_2
としましょうこれは、バックエンドの変更だけでなく、フロントエンドのいくつかの変更をサーバーにヒットしないようにします。/photos/photo_2
- バックボーンとchange these LOCをフォークできます。 私は2つの別々のコレクションを作成しますが、マージ、ビューのソートに対処する可能性があり
- 私は写真のIDで開始することができ
- (クライアントのパフォーマンスに影響を与えるとバックエンドの書き換えが必要)、の
1000000
を言わせて。これは、所与のIDを有する写真をアップロードした所与のユーザが同じIDを有するアルバムを作成する確率を著しく低下させる。
ここでは、モデルの属性ではなく、モデルを引数として取得する方法はありますか? –