Collectionに紐付けされたModel双方に同じイベント名をつけてModelのイベントにはひも付いたView単体のイベント、Collectionには関連View全てのイベントを発行するということをしたかったのですが上手くいきませんでした。
上手くいかないというかModel側からイベントを呼び出すとCollectionのイベントも呼び出されます
Backbone.js側を読み込んでいくとCollection側に
Modelを追加する際にmodelのイベントを全て読み取る_onModelEventというプロキシが設定されていました。
Backbone.js
_onModelEvent: function(event, model, collection, options) {
if ((event === 'add' || event === 'remove') && collection !== this) return;
if (event === 'destroy') this.remove(model, options);
if (model && event === 'change:' + model.idAttribute) {
delete this._byId[model.previous(model.idAttribute)];
if (model.id != null) this._byId[model.id] = model;
}
this.trigger.apply(this, arguments);
}
});
この仕組みによってModelのイベントは一部を除いてCollectionでも発行されるみたいです。
一応動いているがイベント発行数が合わないと悩まされていた箇所がようやく解決した気がします・・・。(書き換えないといけない箇所がたくさんある・・・)
知っていれば部分的に上書きするなりCollection側をModelの挙動に合わせたイベントを設定すれば問題なく動きそうです。