2013-04-17 6 views
11

バックボーンバージョンを0.9.2から1.0にアップデートしていましたが、問題が発生しました。バックボーン1.0バージョンで{silent:true}

モデルが正しく更新されていません。それには遅れがあります。

this.model({ attrib: true},{silent:true}); 

しかし、更新した後、私は{silent:true}を削除し、すべてが完璧に動作します:以前に私のコードは以下完璧に動作します。モデルが正しく更新されます。

は私が{サイレント:真}を渡すん

Backbonejs.org

にこのような何かを読んで、もはや個々の「変更を:attrの」遅れます変化にイベントを、代わりに、彼らは完全に沈黙しています。

私は完全に声明が意味するものは得られません。あなたが引用されたドキュメントの意味について

+1

[Backbone.jsでは、サイレント変更によって最終的に変更イベントがトリガーされるのはなぜですか?](http://stackoverflow.com/questions/10030139/in-backbone-js-why-do-silent-changes-trigger -change-events-결국) – WiredPrairie

答えて

17

:あなたはthis.set({attr: value}, {silent: true})(私はthis.modelがエラーだったと思います)やっていたとき

、すべての変更イベントは、ちょうど次の非サイレント変化するまでを遅らせました。つまり、this.trigger('change')(jQuery/Backboneの最後のバージョンでは、this.change()はもう動作しません)またはthis.set('anotherAttr', anotherValue)を実行していた場合、change:attrイベントが発生していました。

バックボーン1.0では、この動作が変更されました。サイレントフラグを使用している場合、change:attrイベントをもう延期していません。です。が完全に終了しています。

myModel.listenTo(myModel, 'change:attr', function() {alert();}); 
myModel.set('attr', true, {silent: true}); 
myModel.trigger('change'); 
// or myModel.set('anotherAttr', true); 

がバックボーン前に1.0に警告を行いますが、ないバックボーン1.0で:だから、基本的に

は、コードの一部を説明するためのものです。

+0

私の謝罪..タイプミス。 :) ちょうど最近これを読んだ。 http://stackoverflow.com/questions/10030139/in-backbone-js-why-do-silent-changes-trigger-change-events-eventuallyそしてそれは私の質問に答えるようです。まあ、あなたもそれを確認している。ありがとう。 – jongbanaag

+0

@ Dreyfus15答えを受け入れるか、質問を削除することを検討してください。問題が解決したように見える間にこの状態にしないでください。 – Loamhoof

+0

申し訳ありません。忘れてた。私はあなたの答えに印を付けるつもりでしたが、それは2時間後にあなたの答えに印を付ける必要があり、それは私の心を滑りさせました。ありがとう – jongbanaag

関連する問題