Backbone.Collection.addでmergeするところがちょっとよくわからなかったんです
var collection = new Backbone.Collection; collection.add([{id:1, name:'dog'},{id:2, name:'cat'}]); l(JSON.stringify(collection)); collection.add([{id:1, name:'dogdog'}], {merge:true}); l(JSON.stringify(collection));
これで
[{"id":1,"name":"dog"},{"id":2,"name":"cat"}] [{"id":1,"name":"dogdog"},{"id":2,"name":"cat"}]
となぜid
をキーにマージされるのかわからなかったけど、これはつまり、add
に渡したオブジェクトはもうBackbone.Model扱いを受けるので、そのidはdom elementのidと同義になるから、だからこのid
属性が同じならdom上でも同じだからマージしちゃうわけですねたぶん。
追記:違った・・・
Backbone.jsのモデルはすべて
- オブジェクトごとに自動付与されるcid
- オブジェクトを識別するid
- オブジェクトを識別する属性を指定するidAttribute
- これのデフォルトがidで、もし対応するテーブルのPKがid_userならそう書き換えて使う。
を持っているんですって。
あーそうかそうか、Backbone.Viewのidとごっちゃにしてしまったのか。失礼しました。