主干:使用比较器反向采集顺序
Backbone: reverse collection order with comparator
我正在构建一个Backbone应用程序,它显示书籍列表,但当我通过编辑视图添加新书时,他会转到列表的底部,而不是顶部。所以基本上我想用Comparator来反转我的收藏顺序,但我尝试的是不起作用:
comparator: function (model) {
return -model.get('id');
}
下面是一个包含所有代码的JSFiddle:http://jsfiddle.net/swayziak/9R9zU/4/
我不知道这个问题是否只与比较器有关,或者我是否需要在代码的其他部分更改更多内容。
为什么不使用简单的prepend
而不是append
this.$el.prepend(
您的比较器正在查找型号ID:
comparator: function (model) {
return -model.get('id');
}
但您的模型都没有CCD_ 3属性。通常id
将来自服务器,因此服务器将在引导集合时提供初始id
值,然后在save
模型时(由服务器)分配新的id
。
如果你在数据中添加id
,那么事情就会变得更有意义。
你还需要调整你的小提琴:
this.listenTo(this.collection, 'add', this.render);
而不是:
this.listenTo(this.collection, 'add', this.renderBook);
因为您的编辑面板将杀死所有HTML,并且您需要重新呈现整个集合。
一旦你克服了这一点,你会发现你的编辑链接不再有效。这是因为您试图重复使用视图,同时篡改它们的el
的内容。相反,您应该:
- 停止尝试重复使用视图,这几乎永远不值得麻烦
- 为每个视图指定其唯一的
el
- 在将新视图放入公共容器之前,调用
view.remove()
以清除视图 - 然后创建新视图,对其进行渲染,并将其
el
放入容器中
您会发现,由于所有视图共享一个公共容器,您将不再需要将集合视图绑定到集合的'add'
事件,而是要抛出并重新构建整个视图。
相关文章:
- Backbone.js比较器函数是'工作不正常
- 在获取后将新模型准备到集合中(不带比较器)
- 主干中的比较器在添加新模型时需要排序调用
- Linqjs 与比较器问题相交
- 记住比较器函数的参数顺序的技巧是什么
- 覆盖主干网.js比较器
- 按字母顺序比较 2 个字符串以进行排序
- Backbone.js-排序和迭代-比较器不工作
- LINQ.JS,Except的比较器选择器
- 使用“”对字符串进行排序;小于/大于“;比较器中的比较运算符
- 主干:使用比较器反向采集顺序
- I'm在if语句中使用小于比较器;然而,即使它不应该;t、 它的评估结果为false
- 如何使用“>"AngularJS ng-if语句中的比较器
- 将两个模型与一个模型传递到主干比较器,并进行字母数字排序
- Backbone Collection:自定义比较器
- 如何为javascript排序函数制作一个高效的比较器来对字符串数组进行排序
- 如何使用比较器按多个属性排序
- 使用比较器排序是否比使用key- function排序更好?
- 自定义javascript字符串排序比较器
- 为什么角顺序自定义比较器不能工作