Mejores prácticas para mover el model de networking troncal dentro de una colección

Preguntas relacionadas –

BackboneJS es la mejor manera de reorderar models en una colección mientras se mantiene la propiedad ordinal indexada en 0 para cada model

¿Cómo puedo mover un model dentro de una colección?

Tengo una colección Backbone, representada visualmente en una list. Esta list es arrastrable / desplegable. Cualquier elemento se puede mover a una position arbitraria en la colección (es decir, no es un género). He visto algunos ejemplos que usan el remove / add nativo de la colección para poner el model en el lugar correcto. Sin embargo, Backbone internamente llama a set cuando se agregan models, lo que luego llama a un grupo de methods relacionados con los events y los ordera al final. ¿Hay algún inconveniente en simplemente empalmar el model a la position correcta?

Eliminar / Agregar: vea ejemplos en la primera pregunta relacionada.

Empalme: segundo ejemplo

Función que estoy usando actualmente:

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]); }, 

Escribí esta solución para mi proyecto más reciente. Parece ser una interfaz similar a lo que describiste: una list orderable. Este método está vinculado a la colección.

 reorder: function(new_index, original_index) { // If nothing is being changed, don't bother if (new_index === original_index) return this; // Get the model being moved var temp = collection.at(original_index); // Remove it collection.remove(temp); // Add it back in at the new index collection.add(temp, { at: new_index }); return this; } 

La mayor parte de mi propio código ha sido eliminado, pero esa es la funcionalidad principal. Backbone's at opción hace esto realmente fácil.