我使用以前的計算器查詢中發現的以下代碼作爲基礎,在模型被拖放時立即重新排列集合: 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
。我不知道如何繼續這個。任何想法或建議?