在我的汽车站应用场景中,每个汽车站都有两种方式来识别它,它的唯一名称,就像普通的名字和唯一的公众号一样。当客户端与服务器端消息交互时,它将收到两条不同的消息,第一个消息使用总线名称来标识车站,而第二条消息使用唯一的 id 号来标识公交车站。
所以在为公交车站设计模型的时候,一个模型中是否可以有两个索引,所以无论我收到Num 1还是num 2消息,模型都可以立即帮助我找到模型,而不是循环查找站.
向所有人致以最好的问候
在我的汽车站应用场景中,每个汽车站都有两种方式来识别它,它的唯一名称,就像普通的名字和唯一的公众号一样。当客户端与服务器端消息交互时,它将收到两条不同的消息,第一个消息使用总线名称来标识车站,而第二条消息使用唯一的 id 号来标识公交车站。
所以在为公交车站设计模型的时候,一个模型中是否可以有两个索引,所以无论我收到Num 1还是num 2消息,模型都可以立即帮助我找到模型,而不是循环查找站.
向所有人致以最好的问候
没有内置的方法可以实现这一点,但是为集合构建二级索引非常简单。假设模型的名称永远不会改变(它不应该改变,因为它是唯一的标识符):
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');
/未经测试的代码示例