Backbone fetch()抛出一个Uncaught TypeError:无法读取未定义的属性'ajax'

时间:2013-04-28 18:43:17

标签: backbone.js coffeescript undefined fetch typeerror

我正在将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()

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

正如注释中提到的explunit,看起来你看到了这个错误,因为你试图调用$ .ajax(通过fetch)但是$ is undefined(即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调试骨干应用程序的未来问题(免责声明:我创建了这个)

答案 2 :(得分:0)

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