【问题标题】:Model change event order in backbone js主干js中的模型更改事件顺序
【发布时间】:2011-10-27 11:42:09
【问题描述】:

是否保证 'change:property' 事件总是在 'change' 事件之前触发? 这是一个例子:

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"); });

是否保证绑定到'change'的函数最后被触发?

【问题讨论】:

    标签: javascript model-view-controller backbone.js


    【解决方案1】:

    简短回答:是的

    查看源代码,是的,individual:changes 在循环中被触发,之后,如果有任何更改,主change 事件将触发。如果你通过silent: true,这些都不会触发。

    各个更改事件的触发顺序取决于传递给.set() 的属性的顺序。

    【讨论】:

    • 感谢您挖掘主干的源代码!我想知道这是实现细节还是设计选择。我不想依赖 impl 细节。想知道为什么没有正确记录。
    • 骨干网还有许多其他问题,例如大多是多余的下划线依赖性。实际上,我重写了自己的整个实现(花了大约 6 个小时,其中包括许多新功能),所以我已经熟悉源代码了 :)
    • nice :) 你开源了吗? _ 依赖对我来说没问题,因为我使用 _ 模板引擎。
    • 根本没有时间记录它,它可能有一些错误,因为我没有使用它很长时间。需要文档才能使用它,因为模板引擎也是自制的,并且用法与主干略有不同(例如,不需要绑定任何更改事件)。如果您有兴趣,我仍然可以将完整的源代码放在某个地方供您查看。
    • 我很想知道你是怎么做的。如果你开源它,我一定会看看。不过我不会在生产中使用它:)
    猜你喜欢
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 2011-11-22
    • 2011-10-04
    相关资源
    最近更新 更多