Tuesday, June 25, 2013

backbonejs' alteration of ajax handler parameters

As I spend time learning Backbone I've found some unexpected things (to me probably not to others). Today I found that even though Backbone fetch allows you to pass in typical jQuery ajax options (like success or error handlers), it will alter what parameters are passed back to those handlers.

In jQuery

Here is an example of plain jane ajax call (in older style jQuery before renaming of events):

In backbone handler

In backbone fetch changes up what you receive. It is nicely stated in that section:
The options hash takes success and error callbacks which will both be passed (collection, response, options) as arguments.
I only read that like 3 times before i actually saw that note :)

Here is an example of backbone success handler:

The one really nice part of the different parameters is that backbone gives you objects instead of raw-ish data. This means if you need to create two different models (or collections) from the same call, you can pass it directly into the model 'set' method. (see line 13).

Now the question is the best way to handle a situation where the backend server returns multiple models in a response. In this case, I chose to pull them out in a custom ajax handler and update one collection to use specific part of the return data. But I could have been persuaded to create custom ajax call to retrieve and then create each model/collection separately. This might be a good place to write out some examples, code snippets and write about what I learn. I suspect that it will vary like most things :)


1 comment: