【问题标题】:Backbone fetch() throws an Uncaught TypeError: Cannot read property 'ajax' of undefinedBackbone fetch() 抛出 Uncaught TypeError: Cannot read property 'ajax' of undefined
【发布时间】:2013-04-22 09:30:12
【问题描述】:

我正在将 BackBone 集成到一个新项目中。虽然我对 BackBone 有点熟悉,但这将是我第一次尝试使用它创建一个新项目。

我设置了模型和视图,但遇到控制台错误,在 StackOverflow 或 Google 上没有返回任何 helfpul 结果。我希望这里有人能发现我哪里出错了。

这是我调用thing.fetch()时出现的错误

Uncaught TypeError: Cannot read property 'ajax' of undefined 

这是我的 CoffeeScript 代码:

Thing = Backbone.Model.extend
    name: 'thing'
    url: ->
        "/things/#{@id}"

ThingView = Backbone.Model.extend
    el: "#thing"
    render: ->
        console.log 'render', @$el

thing = new Thing(id: 1)
thing.fetch()

thingView = new ThingView()(model: Thing)
thingView.render()

【问题讨论】:

  • 它依赖于 jQuery 或 zepto。您的页面中是否包含其中之一?
  • new ThingView()(model: Thing) 打错了吧?
  • user1737909:不,这不是错字。你在那里看错了什么? explunit:我正在使用 jQuery 1.10.0、Underscore 1.4.4 和 Backbone 1.0.0
  • 你在哪里使用 ajax?应该在某处使用,因为它抱怨 var 或 object。
  • @ricardohdz Backbone 在幕后使用 $.ajax,因此是我之前的评论。

标签: backbone.js coffeescript undefined fetch typeerror


【解决方案1】:

我用 jQuery.slim 搞砸了,你不想要 jquery.slim[.min].js

【讨论】:

    【解决方案2】:

    更新:我自己解决了这个问题。菜鸟错误,没有先加载依赖项。我意识到我在 jQuery 之前而不是在 jQuery 之后搞砸并加载了 Backbone。 ajax 方法是一个未定义的属性,因为那时我的代码中不存在 jQuery。

    很多时候,简单的解决方案是正确的。谢谢大家热心帮忙!

    【讨论】:

      【解决方案3】:

      正如 cmets 中所提到的 explunit,您似乎看到了该错误,因为您尝试调用 $.ajax(通过 fetch)但 $ 未定义(即 jQuery 未正确加载)。

      如果您发布更多信息,我可以尝试提供有关如何解决问题的更多见解/详细信息。

      我想做的其他一些笔记...

      • ThingView = Backbone.Model.extend 应该是 ThingView = Backbone.View.extend(查看不是模型)

      • 在coffeescript中我会写class Thing extends Backbone.Model而不是Thing = Backbone.Model.extend,对于ThingView也是如此

      • 我也对你的语法感到困惑 new ThingView()(model: Thing) 似乎是双括号错字,但也许我在这里忘记了一些东西

      你不应该在这里需要它,因为这似乎只是一个 jQuery 问题,但你可能会幸运地使用 backbone.debug 调试主干应用程序的未来问题(免责声明:我创建了这个)

      【讨论】:

      • 抱歉,您写的是错字。那行代码是来自教程博客的copypasta。
      • 我想给你一个额外的提示,但作为一个新用户,我还没有声誉。不管怎样,谢谢!
      猜你喜欢
      • 2017-04-24
      • 1970-01-01
      • 1970-01-01
      • 2013-01-15
      • 1970-01-01
      • 2019-02-12
      • 2017-12-29
      • 2021-09-20
      • 2021-06-08
      相关资源
      最近更新 更多