2012-02-08 10 views
3

私は属性の束を持っているモデルを持っていますが、ここで興味のある2つはidkeyです。 keyは常にユニークで、idほどではありません。私はコレクションに同じidを持つ複数のモデルを追加しようとすると、私はこのエラーを取得する:バックボーンコレクションにモデルを追加できません

Uncaught Error: Can't add the same model to a collection twice 

私はこれを推測していバックボーンは、2つのモデルが===あるかどうかを判断するためにidを使用しているためです。あれは正しいですか?もしそうなら、idkey属性の名前を入れ替えることなくこの振る舞いを無効にする方法がありますか?私はコレクションのcomparatorを使いこなしましたが、役に立たなかった...

+0

可能な重複:http://stackoverflow.com/questions/6724025/backbone-js-cant-add-the-same-model-to-a-set-twice –

+0

ます。http:// stackoverflowの.com/questions/6724025/backbone-js-cant-add-the-same-model-to-a-set-twice 2回 –

答えて

8

はい、バックボーンは識別のためにモデルのid属性を使用し、管理します。あなたのデータは別のプロパティを使用している場合は、バックボーンは、このプロパティからIDを読ませるために、モデルのidAttributeあなたの財産の名前に設定することができます

var Entry = Backbone.Model.extend({ 
    idAttribute: "key" 
}); 

var entry = new Entry({ key: 1, name: "an entry" }); 
alert("entry id: " + entry.id); 

しかし、あなたは、他の何かのためにモデルのidプロパティを使用することはできません同じ時間。

+0

まさに私が知る必要があった、ありがとう – Matthew

0

バックボーンあなただけの削除、あなたが本当にコレクションに同じモデルを挿入したい場合は700

行目に676 BACKBONE.JSラインでそれを見ることができます... 1つのコレクションに同じモデルを挿入するために私たちを防ぎますそこにコード

if(existing = this.get(model)){//here 
     ... 
} 
関連する問題