【问题标题】:Backbone Error: Uncaught TypeError: Object function (){ parent.apply(this, arguments); } has no method 'on'主干错误:未捕获的类型错误:对象函数(){ parent.apply(this,arguments);没有方法'on'
【发布时间】:2012-02-09 18:43:16
【问题描述】:

任何想法为什么我在调用 collection.fetch 时收到此错误?

在这一段代码中抛出:

这是触发错误的代码:

$(document).ready ->
  SearchResult = Backbone.Model.extend

  SearchResults = Backbone.Collection.extend
    url: "/backbone/search"
    model: SearchResult
    parse: (response)->
      console.log response
      new SearchResult
        id: response.id
        title: response.title


  searchResults = new SearchResults()

  searchResults.fetch()

【问题讨论】:

  • 您需要返回一个对象,该对象可以传入new SearchResult 以获得搜索结果。如果您查看 Collections.Fetch 代码,它使用 parse 的结果传递给 add (它确定它是一个数组还是单个对象;对于数组,它将遍历它们,对于单个对象,它将只是将其直接传递给 _add)

标签: javascript backbone.js coffeescript


【解决方案1】:

问题出在这行代码上:

SearchResult = Backbone.Model.extend

应该是这样的:

SearchResult = Backbone.Model.extend()

否则 CoffeeScript 会将 extend 函数分配给 SearchResult

【讨论】:

  • 我刚刚遇到了同样的错误信息,这是正确的答案。
【解决方案2】:

您实际上并没有将模型附加到集合中......

从文档中,解析应该

返回要添加到集合中的模型属性数组。

$(document).ready ->
  SearchResult = Backbone.Model.extend

  SearchResults = Backbone.Collection.extend
    url: "/backbone/search"
    model: SearchResult
    parse: (response) ->
      _.map response, (item) ->
          id: item.id
          title: item.title

  searchResults = new SearchResults()    
  searchResults.fetch()

我还没有测试过,但我相信它会起作用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    相关资源
    最近更新 更多