読者です 読者をやめる 読者になる 読者になる

Backbone.Collection.addでmergeするところがちょっとよくわからなかったんです

javascript
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とごっちゃにしてしまったのか。失礼しました。