What is “options” in Backbone.js that I see all over the official source code and also used in a tutorial blog by Thomas Davis with sample code here:
Friends = Backbone.Collection.extend({
initialize: function (models, options) {
this.bind("add", options.view.addFriendLi);
}
});
I don’t see any other tutorials using it, and even the doc mentioning it. It does, but in a context kind of format ([options]), not in a hard-coded “options”: options.view.addFriendLi
options, conventionally, is a javascript object of key/value pairs that provide data/context/arguments/configuration to a method call. Think of it like named arguments, as opposed to ordered arguments.For example:
How the function being called uses this object, is up to that function.
The documentation for backbone for
Collection.initialize()does not seem to list what keys on the options object are used or expected, which is unfortunate. So without looking at the source, there is no way to tell. But your example does seem to indicate aviewkey is expected. So you might call it like this:This is simply a convention many libraries tend to use, and there is nothing special about it. But usually many keys in an object that is passed to a function call is better than a funciton that you call with many arguments, because each value has a label which makes it clear what each value is for.
Looking a bit further, now here: http://documentcloud.github.com/backbone/docs/backbone.html#section-53
It looks like
Collection.initialize()only accepts a single key in it’s options:comparator. Here you can define a function used to sort the models in the collection:http://documentcloud.github.com/backbone/#Collection-comparator
Working that into your example, you would call that like this: