2

奇妙なことに、モデルの前のメソッドが思ったように機能していないことに気付きました.get と同じ値を返し続けます。コードに何か問題があるか、change イベントが発生したときに 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"にも同様のことが当てはまります。hasChangedchangedAttributespreviousAttributes

previousイベントハンドラーの内部にいないときに使用しようとしているため、ナンセンスになります。モデルで何が変更されたかを知りたい場合や、"change"イベント ハンドラーの外部で知る必要がある場合は、自分で追跡する必要があります。

于 2012-05-19T06:38:18.887 に答える