コレクションのコンテキストで、モデルデータを含むオブジェクトに基づいてモデルインスタンスを取得したいのですが、idAttributeをハードコーディングしたくありません。
バックボーンを使用すると、モデルインスタンスが既にある場合に簡単になり、その.id
プロパティにアクセスするだけで整理できますが、モデルのインスタンスを作成する以外に、逆の方法を見つけることができないようです。そので取得しますidAttribute
。
例えば:
var Cat = Backbone.Model.extend({
defaults: {
name: '',
age: null
},
idAttribute: 'name'
});
var PushCollection = Backbone.Collection.extend({
initialize: function () {
coll = this;
somePushConnection.on('deleted', function (deleted) {
_.each(deleted, function (obj) {
// obj being something like: {name: 'mittens', age: 302}
var model = coll.get(obj[coll.model.idAttribute]); // Can't do this!
if (model) { model.destroy(); }
});
});
}
});
var Cats = PushCollection.extend({
model: Cat
});