Backbone.js:“ extend”未定义?


103

刚开始使用Backbone.js。仅包含Backbone(开发/生产版本)将导致错误:

Uncaught TypeError: Cannot call method 'extend' of undefined 在第128行:

// Attach all inheritable methods to the Model prototype
_.extend(Backbone.Model.prototype, Backbone.Events, 

问题:您是否将其与任何其他JS库以及Backbone组合?您是否尝试过在没有它们的情况下仍然得到错误?
Spudley

这是一个全新的Rails应用;我什至没有加载jQuery!:)
Matt Darby

Answers:


216

问题是我没有加载underscore.js。我完全错过了文档中的依赖项。咄。

@tjorriemorrie的进一步说明:我有下划线,但是以错误的顺序加载,首先加载下划线(猜测这是“依赖”的意思:)


进一步澄清,以防万一这不明显。JavaScript中事物加载的顺序与页面上显示的顺序有关。要首先加载下划线,请确保包含它的脚本标记位于一个加载主干之前。像这样:

<script src="underscore-1.4.4-min.js"></script>
<script src="backbone-1.0.0-min.js"></script>

2
非常感谢您,我不知道我在做什么错,为什么我什至无法加载主干!
维克多·法拉兹达吉

22
我有下划线,但是以错误的顺序加载,首先加载下划线(猜测“依赖”是什么意思:)
Tjorriemorrie 2012年

11
4,600多个视图和55个投票之后,似乎很多人都没有满足要求。也许它们应该更明显。
Xeoncross

@Matt Darby:您可以将Tjorriemorrie的评论添加到答案中吗?
sumid 2012年


1

顺序也很重要。我遇到了同样的错误,直到我在ebones.js之前给了underscore.js,该错误才得以解决。

<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore-min.js" type="text/javascript"></script>
  <script src="http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min.js" type="text/javascript"></script>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.