我正在一个新项目中集成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条答案
按热度按时间kokeuurv1#
UPDATE:我自己解决了这个问题。新手错误,没有先加载依赖项。我意识到我犯了个错误,在jQuery之前而不是jQuery之后加载了Backbone。 AJAX 方法是一个未定义的属性,因为jQuery在我的代码中不存在。
很多时候,简单的解决方案就是正确的。谢谢每一个跳进来帮忙的人!
fcipmucu2#
正如explunit在注解中提到的,看起来您看到这个错误是因为您试图调用$. AJAX (通过fetch),但$未定义(即jQuery没有正确加载)。
如果你发布一些更多的信息,我可以试着给予更多关于如何解决这个问题的见解/细节。
我还想做一些其他的笔记...
ThingView = Backbone.Model.extend
应为ThingView = Backbone.View.extend
(视图不是模型)class Thing extends Backbone.Model
而不是Thing = Backbone.Model.extend
,对于ThingView也是如此new ThingView()(model: Thing)
看起来像是一个双括号的错别字,但也许我在这里忘记了一些东西这里不需要它,因为这看起来只是一个jQuery问题,但是您可能有机会使用backbone.debug调试 Backbone 应用程序的未来问题(免责声明:我创建了这个)
jc3wubiy3#
我使用jQuery.slim搞砸了,您不需要jQuery.slim [.min].js