2013-02-18 74 views
0

我正试图学习如何与骨干一起工作。我目前正尝试添加从jquery ui排序到创建的待办事项应用程序:Addy Osmani骨干事件发射次数过多

因此,我尝试触发可排序的下降事件上的事件,正如我在js小提琴中看到的。这个事件会在我的项目视图中触发一个函数(drop()),在我的应用程序视图中触发一个函数(update-order())。我希望这最后一个功能通过更改并保存新订单来重新订购待办事项列表。

我遇到的问题是,我的函数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]); 
}, 

回答

0

好吧,我想通了,这个问题我已经是我触发我的更新顺序事件的一个属性改变(顺序)。因为在一滴下的变化顺序与项目变化的顺序相同,这个事件被触发了两次,我只是改变了我触发我的更新顺序事件的方式,并且它完美地工作。