您的比较器正在寻找模型 ID:
comparator: function (model) {
return -model.get('id');
}
但是您的模型都没有id
属性。通常sid
来自服务器,因此服务器将id
在引导集合时提供初始值,然后在您建立模型id
时(由服务器)分配新的 s 。save
如果您将id
s 添加到数据中,那么事情将开始变得更有意义。
您还需要将小提琴调整为:
this.listenTo(this.collection, 'add', this.render);
代替:
this.listenTo(this.collection, 'add', this.renderBook);
因为你的编辑面板会杀死所有的 HTML,你需要重新渲染整个集合。
一旦你过去了,你会发现你的编辑链接不再有效。那是因为你试图重用视图,同时弄乱它们的内容el
。相反,您应该:
- 停止尝试重用视图,这几乎不值得麻烦。
- 让每个视图都有自己的独特之处
el
。
view.remove()
在将新视图放入公共容器之前调用以删除视图。
- 然后创建新视图,渲染它,并将其
el
放入容器中。
您会发现,由于您的所有视图共享一个公共容器,您将不再需要将集合视图绑定到集合的'add'
事件,而是折腾和重建整个视图。