Backbone.js fetch()ajax错误

iro*_*ber 2 coffeescript backbone.js ruby-on-rails-3

我正在为一个项目组建一个基本的CRUD系统,我们决定捆绑Backbone.js和CoffeeScript来抽象更多我们的JavaScript功能.学习曲线对我来说非常陡峭,因为我不是一个JS专业人士.

目前,我只是想拉一记.任何记录.因此,在我前进之前,我已经装配了一条虚拟路线,通过JSON提供"产品"记录集,以了解它是如何呈现的.

  window.Product = Backbone.Model.extend
    initialize: -> console.log this
  window.Products = Backbone.Collection.extend
    model: Product
    initialize: -> console.log this
    url: '/dummy'
Run Code Online (Sandbox Code Playgroud)

所以,在控制台中,我输入:

product = new Product()
Run Code Online (Sandbox Code Playgroud)

它似乎使产品很好.但是当我键入:

product.fetch()
Run Code Online (Sandbox Code Playgroud)

它返回:

TypeError: Cannot call method 'ajax' of undefined
Run Code Online (Sandbox Code Playgroud)

我和Collection尝试过同样的事情.

products = new Products()
products.fetch()
TypeError: Cannot call method 'ajax' of undefined
Run Code Online (Sandbox Code Playgroud)

我已经使其他部分(查看渲染等)工作得很好,但这个ajax错误反复出现在我身上.我花了几个小时查看不同的文档(包括官方文档,以及我可以从wiki中查找的所有信息),在纯JavaScript和CoffeeScript中尝试代码,实现不同的范围(有/没有窗口命名空间)等等.谷歌上没有任何东西.

这一定是我应该知道的非常简单的事情,但我无法弄清楚我的生活.或者它是我错过的文档中的一个位置.谁能告诉我我做错了什么?

Elf*_*erg 8

@Ironchamber:为了使用Backbone的Ajax方法,您还必须提供一个提供跨浏览器Ajax支持的库.Backbone经过优化,可以使用jQuery或Zepto.从您的错误消息中我看到您错过了其中一个.

  • 另请注意,Backbone要求您在*Backbone本身之前包含jQuery或Zepto*.看一下[注释源代码](http://documentcloud.github.com/backbone/docs/backbone.html):它的第一行是`var $ = this.jQuery || this.Zepto;`.所以``jQuery` /`Zepto`必须已经存在,否则当调用`$ .ajax`时```将是`undefined`. (2认同)