Reputation: 8453
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"))
What am I doing wrong?
Upvotes: 2
Views: 3945
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