我使用与Backbone ToDo示例非常相似的代码 - http://documentcloud.github.com/backbone/docs/todos.html。
在我将新模型插入集合后,我对集合进行了排序。 todo示例将新数据附加到视图的末尾
var view = new TodoView({model: todo});
$("#todo-list").append(view.render().el);
我想将模型数据根据其在集合中的位置插入到视图中,而不仅仅是最后一个位置。知道怎么做吗?
答案 0 :(得分:6)
首先获取集合中新添加的模型的索引(排序后)。您可以使用下划线方法indexOf
来获取它,即index = todoColl.indexOf(todo);
。
然后使用:eq()jQuery选择器获取当前位于列表中此位置的项目,并使用.before()新项目,即$("li:eq(" + index.toString() + ")").before(view.render().el);
(假设视图呈现li元素)。小心,如果新项目是最后一个,则添加代码来管理案例(在这种情况下,jQuery选择器将为空)。