Backbone.js: `extend` undefined?


103

Backbone.jsを使い始めたところです。バックボーン(どちらかの開発/本番バージョン)を含めるだけでエラーが発生します。

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

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

質問:他のJSライブラリやバックボーンと組み合わせますか?それでもエラーが発生するかどうか確認してみましたか?
Spudley、2011

これはまったく新しいRailsアプリです。jQueryもロードしていません!:)
マットダービー、

回答:


216

問題は、ロードしていないことでしたunderscore.js。私はドキュメントでその依存関係を完全に逃しました。ええと。

@tjorriemorrieからの明確化:アンダースコアがありましたが、間違った順序でロードされました。最初にアンダースコアをロードします(これが「依存関係」の意味です)。


これが明らかでない場合に備えて、さらに明確にします。JavaScriptに読み込まれる順番は、ページに表示される順番に関連しています。アンダースコアを最初に読み込むには、それを含むスクリプトタグが、バックボーンを読み込むものの前に来るようにしてください。このような:

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

2
どうもありがとう、私が間違っていること、そしてバックボーンをロードすることさえできない理由に困惑しました!
Victor Farazdagi、2011

22
私はアンダースコアを持っていましたが、間違った順序でロードされました。最初にアンダースコアをロードします(これが「依存関係」の意味だと思います:)
Tjorriemorrie

11
4,600以上の再生回数と55回の賛成投票で、多くの人が要件を見逃しているようです。おそらく、それらはもっとはっきりするはずです。
Xeoncross、2012年

@Matt Darby:Tjorriemorrieからのコメントを回答に追加できますか?
sumid

2

バックボーンのみのハード依存関係は、Underscore.jsがbackbonejsスクリプトの前にunderscorejsスクリプトをロードすることです。


1

順序も重要です。同じエラーが発生し、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>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.