Backbone.js: How to get the index of a model in a Backbone Collection?
backbone.jsbackbone.js Problem Overview
Is there a way to find the index of a model within a collection?
Let's say in a view we have a model we're working on, could that model spit out it's index within the collection it's currently inside of? I'd like to do this because I want to access the model above or below the current target.
In other words is there something like:
index = this.model.index
modelAbove = this.collection.at( index-1 )
My data is a nested set so I can just do a search on the "lft" or "rgt" columns, but I didn't want to reinvent the wheel if Backbone already has this info available.
backbone.js Solutions
Solution 1 - backbone.js
yes, backbone provides access to many underscore.js methods on models and collections, including an indexOf
method on collections. it also provides an at
method like you've shown.
var index = this.collection.indexOf(this.model);
var modelAbove = this.collection.at(index-1);