3
私はBackbone.js
にViewを取得しようとしていますが、データが変更されている場合にのみ 'change'イベントが発生したときに保存します。モデルが変更されたときに明確にmodel.hasChanged()
がfalse
である理由私が知りたいのですがBackbone.jsがModel.hasChangedイベントを登録していません
function changed_event() {
log.debug("Before: " + this.model.get('name')) // not 'contrived!'
this.model.set({'name': 'contrived!'});
log.debug("After: " + this.model.get('name')) // 'contrived!'
if (this.model.hasChanged()) {
alert("This is never called.");
}
}
:
かいつまんで、私はこれを呼び出して表示に設定された「変更」イベントをしました。
私は他にどんな情報が必要なのか分かりませんが、もっと役立つ情報があればコメントしてください。私は詳しく説明します。
ありがとうございます。
これは間違いありません。 Brianと私は、最後の同期以来変更されたプロパティのリストを望んでいたようです。 – funwhilelost
また、どの属性が変更されたかをトラッキングする方法も必要です。 '_previousAttributes'がこれを追跡すると思うでしょうが、setで更新されます。 – brad
変更された属性のリストを保存してそのリストを保持する場合は、this.previousChangedAttrs = this.changedAttributes()のような変更イベントのハンドラを作成します。その後、いつでも好きなときにpreviousChangedAttrsをチェックすることができます。 changeイベントは、silentオプションなしでset()を呼び出すたびに発生するので、setへの複数の呼び出しによってpreviousChangedAttrsがリセットされることに注意してください。必要に応じて、配列を作成して変更の履歴を追跡することができます。私自身のクライアント側の取り消しシステムをロールバックすることを考えさせる... – mtjhax