2014-02-24 81 views
0

我使用以前的計算器查詢中發現的以下代碼作爲基礎,在模型被拖放時立即重新排列集合: Saving jQuery UI Sortable's order to Backbone.js Collection將模型拖放後重新排序集合

一切正常,直到我決定使用Require.js模塊化我的代碼。這是我面臨的問題。

我有一個由一些模型組成的集合。 ElementView是負責渲染每個模型的視圖。 FormView是接收這個集合並遍歷每個模型並附加html的視圖。所以在我的FormView我需要ElementView來實現這一點。我也在FormView的初始範圍內初始化了sortable

$(".sortable").sortable({     
    stop: function(event, ui) {     
     ui.item.trigger('drop', ui.item.index()); 
    } 
}); 

當用戶拖放的元素,可排序的jquery API觸發功能的「滴」,其是夾在ElementView。

drop: function(event, index){     
    this.$el.trigger("update-sort", [this.model, index]); 
}, 

ElementView觸發調用模型本身和位置沿updateSort到它被轉移到的變化,這是應該由一個函數來處理在FormView這樣

updateSort: function(event, model, position) {  
    this.collection.remove(model);    
    this.collection.each(function (model, index) {       
     var ordinal = index; 
     if (index >= position) 
      ordinal += 1; 
     model.set('ordinal', ordinal); 
    });    

    //model.set('ordinal', position); 
    this.collection.add(model, {at: position});  
    console.log(this.collection.toJSON());    
},    

問題似乎在於,即使ElementView正在觸發updateSort變更,但實際上從未由FormView處理,因此重新排序從未發生過。我不確定模塊化代碼是否導致了這個問題。它看起來像ElementView無法達到FormView。根據技術要求,我沒有在ElementView中包含FormView。我不知道如何繼續這個。任何想法或建議?

回答