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