2

奇怪的是,我注意到以前的模型方法并没有像我想象的那样工作..它一直返回与 get 相同的值。我认为我的代码有问题,或者当更改事件被触发时,backbone.js 没有升级 this._previousAttributes。

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/

我究竟做错了什么?

4

1 回答 1

6

previous方法仅在"change"事件发生时有用:

以前的 model.previous(attribute)

"change"事件期间,此方法可用于获取更改属性的先前值。

previous方法仅在"change"事件处理程序内部有用;类似的事情适用于hasChanged,changedAttributespreviousAttributes

previous当您不在事件处理程序中时,您正在尝试使用,所以您会胡说八道。如果您想知道模型中发生了什么变化并且您需要知道"change"事件处理程序之外的内容,那么您必须自己跟踪它

于 2012-05-19T06:38:18.887 回答