Backbone fetch()抛出未捕获的TypeError:无法读取未定义的属性' AJAX '

nhjlsmyf  于 2022-11-10  发布在  其他
关注(0)|答案(3)|浏览(117)

我正在一个新项目中集成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()
kokeuurv

kokeuurv1#

UPDATE:我自己解决了这个问题。新手错误,没有先加载依赖项。我意识到我犯了个错误,在jQuery之前而不是jQuery之后加载了Backbone。 AJAX 方法是一个未定义的属性,因为jQuery在我的代码中不存在。
很多时候,简单的解决方案就是正确的。谢谢每一个跳进来帮忙的人!

fcipmucu

fcipmucu2#

正如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调试 Backbone 应用程序的未来问题(免责声明:我创建了这个)

jc3wubiy

jc3wubiy3#

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

相关问题