Backbone.js集合获取'这个_byId'未定义

Backbone.js collection fetch 'this._byId' undefined

本文关键字:byId 未定义 这个 js 集合 Backbone 获取      更新时间:2023-09-26

我正在使用coffeescript。我的代码很简单:

class SomeCollection extends Backbone.Collection
  constructor: (@options) ->
  url: ->
    "#{$SCRIPT_ROOT}/some/data/#{@options.someId}"
  model: SomeModel
class SomeView extends Backbone.View
  initialize: ->
    myCollection = new SomeCollection()
    myCollection.fetch
      success: (coll, resp) ->
        console.log coll

从我收藏的url返回的JSON正是:

[{"id": 1, "comments": "", "name": "images/exceptions/59.png"}]

但是,在将任何内容打印到控制台之前,我在第768行收到backbone.js错误无法读取未定义的属性1。未定义的对象是集合的get函数中的this._byId。我该如何解决这个问题?

您正在扩展Backbone.Collection并提供自己的构造函数,因此需要确保调用父构造函数。

constructor: (@options) ->
  super null, @options

此外,Collection的标准参数是(models, options),所以我会坚持使用它。

constructor: (models, @options) ->
  super models, @options

或者更好的是,使用initialize而不是constructor来避免完全的

initialize: (models, @options) ->