0

在我的汽车站应用场景中,每个汽车站都有两种方式来识别它,它的唯一名称,就像普通的名字和唯一的公众号一样。当客户端与服务器端消息交互时,它将收到两条不同的消息,第一个消息使用总线名称来标识车站,而第二条消息使用唯一的 id 号来标识公交车站。

所以在为公交车站设计模型的时候,一个模型中是否可以有两个索引,所以无论我收到Num 1还是num 2消息,模型都可以立即帮助我找到模型,而不是循环查找站.

向所有人致以最好的问候

4

1 回答 1

0

没有内置的方法可以实现这一点,但是为集合构建二级索引非常简单。假设模型的名称永远不会改变(它不应该改变,因为它是唯一的标识符):

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');

/未经测试的代码示例

于 2013-03-14T10:32:57.980 回答