これを実現する組み込みの方法はありませんが、コレクションのセカンダリ インデックスを作成するのは非常に簡単です。モデルの名前が決して変更されないと仮定します (一意の識別子であるため、変更すべきではありません)。
var StationCollection = Backbone.Collection.extend({
initialize: function() {
this.on('add', this._onAdd, this);
this.on('remove', this._onRemove, this);
this.on('reset', this._onReset, this);
this._onReset();
},
getByName: function(name) {
return this._byName[name];
},
_onAdd: function(model) {
this._byName[model.get('name')] = model;
},
_onRemove: function(model) {
delete this._byName[model.get('name')];
},
_onReset: function(model) {
this._byName = {};
this.each(this._onAdd);
}
});
使用法:
var station = stations.getByName('name_of_station');
/テストされていないコード サンプル