【问题标题】:Backbone event fired too many times主干事件触发太多次
【发布时间】:2013-02-18 21:06:01
【问题描述】:

我正在努力学习如何使用骨干。我目前正在尝试将 jQuery ui 中的可排序添加到由 Addy Osmani 创建的待办事项应用程序中。

所以我尝试在可排序的放置事件上触发一个事件,正如我在 js fiddle 中看到的那样。此事件将在我的项目视图中触发一个函数 (drop()),它在我的应用视图中触发一个函数 (update-order())。我希望最后一个函数通过changeand 保存新订单来重新排序待办事项列表。

我的问题是我的函数updateOrder被触发了4次,当drop函数只触发一次时,也没有记录顺序的变化,我不知道为什么。

这是我的示例:http://www.fgtechs.fr/backbone/ 我基本上是在尝试反转可排序的放置事件的顺序。

我希望我的函数 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]);
},  

【问题讨论】:

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


    【解决方案1】:

    好吧,我想通了,我遇到的问题是我在属性更改(订单)上触发了我的更新订单事件。因为单次更改的顺序比项目多,所以该事件被触发了两次,我只是更改了触发更新顺序事件的方式,并且效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      相关资源
      最近更新 更多