Question

According the Backbone.js documentation Model-parse does the following:

parse is called whenever a model's data is returned by the server, in fetch, and save.

To augment models I've already loaded I use Model.parse(). I accomplish this by using fetch to make an additional request for data, then use that data to add properties to an existing model.

Example:

the fetch object is {age: 19}
after the parser will be {age: 19, isAdult: true}

When I perform the save request, in the PUT request I also have other parameters not needed (for example isAdult). I would like to have the original model (without additional parameters in PUT request).

What is the best way to achieve my goal in Backbone?

Was it helpful?

Solution

If I understand your question correctly ....

When backbone talks to a server using a save it sends a complete respresentation of the model. As the docs put it :

The attributes hash (as in set) should contain the attributes you'd like to change — keys that aren't mentioned won't be altered — but, a complete representation of the resource will be sent to the server.

So the default behavior is to send the complete model. If you want to implement you're own logic you're going to have to override the sync method. Dig through the expanded backbone code a bit and you'll see this comment above sync :

// Override this function to change the manner in which Backbone persists
// models to the server. You will be passed the type of request, and the model in question.

I would use the default implementation of sync as my starting point.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top