0
我正在使用Coffeescript的Backbone。我用我的觀點的代碼是:奇怪的行爲在使用sortby與Backbone/Coffeescript
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)
問題是,當我想骨幹收集上的第一線分類渲染功能我得到遺漏的類型錯誤:對象[對象數組]有沒有方法「 sortBy'錯誤。如果我改變渲染功能,並將其改寫爲:
render: ->
sorted = @collection.sortBy (item) -> item.get('name')
sorted.forEach @renderEntry, @
@
然後一切正常。原始代碼有什麼問題?
我試圖將排序功能移動到另一個功能,沒有任何改變。再次,當我想分配集合本身收集到同樣的錯誤。
任何想法?
在此先感謝。
sortBy返回一個數組而不是實際的集合。因此排序是一個數組而不是Backbone.Collection。我猜你正在嘗試使用Array來對抗集合本身。所以當你嘗試求助時,你的@collection會拋出一個錯誤,因爲它不再是Backbone.Collection。檢查此[回答](http://stackoverflow.com/questions/18010714/backbone-collection-sortby) – TYRONEMICHAEL
問題不在於收集。如果我嘗試將sortBy的結果賦給集合本身,我會得到這個錯誤,但是如果我將結果賦值給另一個變量,就像之前提到的那樣,一切正常,JS不會拋出運行時錯誤。其實問題出現在「=」符號的右側,當我改變左側時,一切都很順利。相當困惑! –