Backbone.js 主干收集和视图排序
我在集合中设置了“comparator”方法,以便对集合中的列表进行排序。 但这并不影响你的看法 “/api/note/getList”,它返回(当视图初始化集合时调用) 这是我的收藏Backbone.js 主干收集和视图排序,backbone.js,coffeescript,Backbone.js,Coffeescript,我在集合中设置了“comparator”方法,以便对集合中的列表进行排序。 但这并不影响你的看法 “/api/note/getList”,它返回(当视图初始化集合时调用) 这是我的收藏 define [ 'models/Note' ], (Note) -> class NoteCollection extends Backbone.Collection model : Note url : '/api/note/getList'
define [
'models/Note'
],
(Note) ->
class NoteCollection extends Backbone.Collection
model : Note
url : '/api/note/getList'
initialize: () =>
_.bindAll @
@.on 'sort', @onSort
comparator : (item) ->
id = item.get 'id'
return id * -1
onSort: () =>
@.each (model) =>
console.log model.get 'id'
onSort方法打印
11
22
33
正确,但在视图中,它显示
22
11
33
这是我的看法,
define [
'hbs!./noteCollection_tpl'
'./noteItemView'
'collections/NoteCollection'
],
(noteCollection_tpl, noteItemView, NoteCollection) ->
class NoteCollectionView extends Backbone.Marionette.CompositeView
template : noteCollection_tpl
itemView : noteItemView
itemViewContainer : '.noteListContainer'
className : 'noteWrap'
initialize : (options) ->
@collection = new NoteCollection()
我必须重新渲染视图吗?如果是这样的话,当加载url并将所有列表放入集合后,如何捕获(what)事件
请告知我做错了什么。需要在对集合进行排序时进行渲染
initialize : (options) ->
@collection = new NoteCollection()
@collection.on 'sort', () =>
@render()
哦,最好使用“listenTo”,因为
当视图被销毁时,listenTo调用将自动删除事件处理程序。这可以防止内存泄漏和僵尸事件侦听器。
我相信,使用木偶将解决这个僵尸事件侦听器
谢谢张宇瑞。是的,在对收藏进行排序后,您必须重新提交视图。抱歉,我不擅长coffeescript,但在视图的初始化中,您可以:this.collection.on('sort reset',this.render,this));这捕获了当集合被“重置”(例如,在fetch()完成之后)以及当集合被排序时的事件。我明白了。非常感谢。(顺便说一句,挂接该事件是一项烦人的工作。)是的,默认情况下,主干在视图中没有数据绑定。顺便说一句,如果您使用的是backbonejs>1.0。使用listenTo更好。例如,在集合的初始化中:this.listenTo(this.collection,“sort reset”,this.render);顺便说一句,
\uu.bindAll@
无法使用较新版本的下划线,您必须立即指定方法名称()。@mu太短了,是的,谢谢!
initialize : (options) ->
@collection = new NoteCollection()
@collection.on 'sort', () =>
@render()