【发布时间】:2013-08-17 19:42:51
【问题描述】:
相关问题 -
How can I move a model within a collection?
我有一个 Backbone 集合,在列表中直观地表示。此列表是可拖放的。任何项目都可以移动到集合中的任意位置(即 - 不是排序)。我已经看到了一些使用集合的本机删除/添加将模型放置在正确位置的示例。但是,Backbone 在添加模型时内部调用 set,然后调用一堆与事件相关的方法并在最后对其进行排序。 将模型拼接到正确的位置有什么缺点吗?
删除/添加: 请参阅第一个链接问题中的示例。
拼接: 第二个例子
我目前正在使用的功能:
moveTo: function(oldIndex, newIndex){
oldIndex = oldIndex instanceof Backbone.Model ? this.at(oldIndex) : oldIndex;
var spliced = this.models.splice(oldIndex, 1);
this.models.splice(newIndex, 0, spliced[0]);
this.trigger("move",[oldIndex,newIndex]);
},
【问题讨论】:
-
你确定这不是排序吗?拖放以移动事物是手动更改元素索引,而数组/集合或多或少是按索引排序的。
-
我想“技术上”你可以称之为排序,我只是说它是任意的,而不是基于数组属性的自动排序。但我认为您指出这相当于“排序”,因为两者都只是重新排列项目,因此 Backbone 没有问题。
-
我的问题可能更好地表达为 - “是否有过您想要删除模型并将其重新添加到集合中的情况,而不是手动“排序”它们?” ;)
标签: javascript backbone.js backbone.js-collections