下面的代码位于渲染函数中的 Backbone.View 中。我正在使用 Backbone.Relational 和 jQuery UI Sortable。
var scopedThis = this;
// make this container a sortable container
this.$el.sortable({
connectWith: '.wlProductsInRoomContainer',
revert: true,
stop: function(){
scopedThis.getNewSortOrders();
},
receive: function(e, r){
// get model from newly passed in product
var prodModel = r.item.data().productView.model;
// add model to this collection but pass silent so collection add event doesn't get ran
scopedThis.collection.add(prodModel, { silent: true });
},
remove: function (e, r){
// get model from product that has left this sortable
var prodModel = r.item.data().productView.model;
// remove this model from this collection
scopedThis.collection.remove(prodModel);
console.log(scopedThis.collection);
}
});
问题发生在可排序的删除功能中。离开可排序的元素在其 .data() 中包含其对应的模型。所以我们从那里检索它并尝试从这个集合中删除它,但是在之后记录集合时,模型永远不会被删除。让这特别奇怪的是,它上面的接收函数使用相同的精确模型来添加完美的工作。有任何想法吗?感谢您的帮助!