2011-10-27 49 views
1

确保'更改:属性'事件总是被触发之前'更改'事件? 下面是一个例子:骨干中的模型更改事件顺序js

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

感谢您挖掘骨干的来源!我想知道这是一个实现细节还是设计选择。我不想依靠impl的细节。想知道为什么这没有适当的文件。 – nakhli

+0

主干还有许多其他问题,例如大多数冗余下划线依赖。我其实我重写了我自己的整个事情的实现(花了6小时,其中包括许多新功能),所以我已经熟悉源:) – Esailija

+0

很好:)你开源吗? _依赖关系对我来说是好的,因为我使用了_ template引擎。 – nakhli