2011-02-02 72 views
101

刚开始使用Backbone.js。简单地包括骨干网(无论是开发/生产版本),导致错误:Backbone.js:`extend` undefined?

Uncaught TypeError: Cannot call method 'extend' of undefined 128线:

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

问题:你是否将它与任何其他JS库以及Backbone结合?你有没有试过看看,如果你还没有得到它的错误? – Spudley 2011-02-02 15:26:29

+0

这是一个全新的Rails应用程序;我甚至没有加载jQuery! :) – 2011-02-02 15:36:27

回答

211

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

进一步澄清@tjorriemorrie: 我曾强调,但装在错误的顺序,先装下划线(猜这是什么“依赖”的意思:)以防万一这个ISN


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

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

骨干只有硬依赖是Underscore.js 负载之前backbonejs脚本

1

的顺序也很重要underscorejs脚本。我得到了同样的错误,直到我在backbone.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>