2011-10-27 16 views
1

'変更:プロパティ'イベントは常にの '変更'イベントのより前に発生することが保証されますか?ここで は一例です:バックボーンjのモデル変更イベントのオーダー

MyModel = Backbone.Model.extend({ 
    property1: 'value1', 
    property2: 'value2' 
}); 

var myModel = new MyModel(); 
myModel.bind('change:property1', function() { alert("change pty1"); }) 
     .bind('change', function() { alert("change"); }) 
     .bind('change:property2', function() { alert("change pty2"); }); 

は、それが「変更」にバインド機能が最後に解雇されることを保証しますか?

答えて

5

短い答え:ソースコードを見てみるとそう

、はいindividual:changesはループ中で焼成されており、変更があった場合、その後、メインchangeイベントが発生します。 silent: trueに合格した場合、これらのいずれも起動しません。

個々の変更イベントの発生順序は、.set()に渡される属性の順序によって異なります。

+0

バックボーンのソースを掘り下げてくれてありがとう!私はこれが実装の詳細か設計の選択かどうか疑問に思っています。私はインプラントの細部に頼りたくはありません。なぜこれが適切に文書化されていないのか不思議です。 – nakhli

+0

バックボーンには他にも多くの問題があります。ほとんどの場合、冗長なアンダースコア依存性があります。私は実際には、私はすでにソースに精通していたので、(多くの新機能を含む6時間がかかった)全体の自分の実装を書き直しました:) – Esailija

+0

nice :)あなたはソースをオープンしましたか? _テンプレートエンジンを使用しているので、_依存関係は私にとっては問題ありません。 – nakhli

関連する問題