4

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

3 回答 3

6

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

很多时候,简单的解决方案是正确的。感谢所有跳进来帮忙的人!

于 2013-05-09T07:05:57.313 回答
2

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

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

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

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

  • 在coffeescript中,我会为ThingView编写class Thing extends Backbone.Model而不是相同的Thing = Backbone.Model.extend

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

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

于 2013-04-29T19:54:42.837 回答
0

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

于 2020-08-31T03:55:33.030 回答