我正在使用带有 Coffeescript 的 Backbone。我用于视图的代码是:
initialize: ->
@collection.on "reset", @render, @
@collection.fetch({reset: true})
render: ->
@collection = @collection.sortBy (item) -> item.get('name')
@collection.forEach @renderEntry, @
@
renderEntry: (model) ->
v = new App.Views.EntryView({model: model})
@$el.append(v.render().el)
问题是当我想在渲染函数的第一行对 Backbone 集合进行排序时,我得到Uncaught TypeError: Object [object Array] has no method 'sortBy'错误。如果我更改渲染功能并将其重写为:
render: ->
sorted = @collection.sortBy (item) -> item.get('name')
sorted.forEach @renderEntry, @
@
然后一切正常。原始代码有什么问题?
我试图将排序功能移至另一个功能,但没有任何改变。同样,当我想将排序集合分配给集合本身时,我得到了同样的错误。
有任何想法吗?
提前致谢。