mateusmaso
mateusmaso

Reputation: 8453

Backbone.js Model previous method not working?

Strangely I noticed that the model previous method is not working the way I thought.. it keeps returning the same value as the get. I think that something is wrong with my code or backbone.js is not upgrading the this._previousAttributes when change event is fired.

model = new Backbone.Model()

model.set({attr1: 123})

alert(model.previous("attr1"))  //alert 123 instead of undefined
alert(model.get("attr1"))

model.set({attr1: 312})

alert(model.previous("attr1"))  //alert 321 instead of 123
alert(model.get("attr1"))

http://jsfiddle.net/wLKBk/

What am I doing wrong?

Upvotes: 2

Views: 3945

Answers (1)

mu is too short
mu is too short

Reputation: 434685

The previous method is only useful while a "change" event is happening:

previous model.previous(attribute)

During a "change" event, this method can be used to get the previous value of a changed attribute.

The previous method is only useful inside a "change" event handler; similar things apply to hasChanged, changedAttributes, and previousAttributes.

You're trying to use previous when you're not inside an event handler so you get nonsense. If you want to know what has changed in a model and you need to know outside of "change" event handlers, then you'll have to track it yourself.

Upvotes: 6

Related Questions