私はコーヒースクリプトでバックボーンを使用しています。ビューに使用するコードは次のとおりです。
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)
問題は、レンダリング関数の最初の行でバックボーン コレクションを並べ替えたいときに、Uncaught TypeError: Object [object Array] has no method 'sortBy'エラーが発生することです。render 関数を変更して次のように書き換えると:
render: ->
sorted = @collection.sortBy (item) -> item.get('name')
sorted.forEach @renderEntry, @
@
その後、すべて正常に動作します。元のコードの何が問題になっていますか?
並べ替え機能を別の機能に移動しようとしましたが、何も変わりませんでした。ソートされたコレクションをコレクション自体に割り当てたい場合も、同じエラーが発生します。
何か案は?
前もって感謝します。