Update Backbone Model with No Change Events

I recently needed to update an array of models to add a “reflowed” attribute to a comment which would act as a flag to show that the comment had been reordered.

Doing it Wrong

When I was working through this issue, the first thing that came to mind was that I could update the model attributes myself.

This is possible with the following syntax.

[code lang=javascript]
model.attributes.attribute = value;
[/code]

But, this isn’t good software development. So, I trashed that idea.

The Backbone Way

The Backbone way to update a model is:

[code lang=javascript]
model.set( { attribute: value } )
[/code]

But, by default, this will trigger a change event on every changed attribute. For my use case, triggering change events for several models wasn’t necessary.

Looking into the annotated Backbone source code, I noticed that I could pass in an options array that set silent to true. This makes the model update look like this:

[code lang=javascript]
model.set( { attribute, value }, { silent: true } );
[/code]

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Discover more from Eric Binnion

Subscribe now to keep reading and get access to the full archive.

Continue reading