我已经看到了几种从集合中获取下一个或上一个模型的不同方法,但想知道是否有人可以就我决定实施它的方式提供一些建议。我的收藏是有序的,但我排序的 id 不能保证是连续的。它只保证是唯一的。假设较小的 id 是集合的“旧”条目,而较大的 id 是“较新”的。
MyCollection = Backbone.Collection.extend({
model: MyModel,
initialize:function (){
this.getElement = this._getElement(0);
},
comparator: function(model) {
return model.get("id");
},
_getElement: function (index){
var self = this;
return function (what){
if (what === "next"){
if (index+1 >= self.length) return null;
return self.at(++index);
}
if (what === "prev"){
if (index-1 < 0 ) return null;
return self.at(--index);
}
// what doesn't equal anything useful
return null;
};
}
});
使用 getElement 时,我会执行 getElement("next") 和 getElement("prev") 之类的操作来询问我收藏中的下一个或上一个模型。getElement 返回的是实际模型,而不是索引。我知道collection.indexOf,但我想要一种方法来循环遍历集合,而无需先从模型开始。这个实现是否比它需要的更难?