2013-02-18 119 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

好吧,我想通了,這個問題我已經是我觸發我的更新順序事件的一個屬性改變(順序)。因爲在一滴下的變化順序與項目變化的順序相同,這個事件被觸發了兩次,我只是改變了我觸發我的更新順序事件的方式,並且它完美地工作。