Backbone事件发生了太多次

时间:2013-02-18 21:06:01

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

我正在努力学习如何使用骨干网。我目前正在尝试将jquery ui中的sortable添加到由Addy Osmani创建的todo应用程序中

所以我尝试在可排序的drop事件上触发事件,就像我在js小提琴中看到的那样。此事件将在我的项视图中触发一个函数(drop()),该函数在我的应用视图中触发一个函数(update-order())。我希望这最后一个函数通过更改并保存新订单来重新排序待办事项列表。

我遇到的问题是我的函数updateOrder被触发了4次,当drop函数只被触发一次时,也没有记录更改顺序,我无法理解为什么。

这是我的例子:http://www.fgtechs.fr/backbone/我基本上试图颠倒可排序的drop事件的顺序。

我本来希望我的函数updateOrder只被触发一次并且记录了订单的更改......但是没有发生这种情况......

我真的需要你的帮助;)提前致谢;)

以下是我的代码的一部分(您可以在我的示例中看到其余部分)

<script>
        $(document).ready(function() {
            $('#widget-list').sortable({
                stop: function(event, ui) {
                    event.stopPropagation()
                    event.preventDefault();
                    ui.item.trigger('drop', ui.item.index());
                }
            });
        });    
    </script>


//on the drop, we invert the order
        updateOrder:function(event, model, position){
            alert('update-order');
            console.log(app.Widgets.length);
            app.Widgets.each(function (widget, order) {
                widget.save({
                    'order': app.Widgets.length-order
                });
            });
        }


//On the event drop, we trigger the function update order
drop: function(event, position) {
    this.$el.trigger('update-order', [this.model, position]);
},  

1 个答案:

答案 0 :(得分:0)

好吧,我想通了,我遇到的问题是我在属性更改(订单)上触发了我的更新顺序事件。因为在一个drop上有变化的顺序而不是items,事件被触发了两次,我只是改变了我触发update-order事件的方式并且它工作得很好。