Backbone.js: `memperpanjang` tidak ditentukan?

103

Baru saja memulai dengan Backbone.js. Cukup memasukkan Backbone (baik versi dev / produksi) menyebabkan kesalahan:

Uncaught TypeError: Cannot call method 'extend' of undefined di Baris 128:

// Attach all inheritable methods to the Model prototype
_.extend(Backbone.Model.prototype, Backbone.Events, 
Matt Darby
sumber
Pertanyaan: Apakah Anda menggabungkannya dengan library JS lainnya serta Backbone? Sudahkah Anda mencoba melihat apakah Anda masih mendapatkan kesalahan tanpa mereka?
Spudley
Ini adalah aplikasi Rails baru; Saya bahkan tidak memuat jQuery! :)
Matt Darby

Jawaban:

216

Masalahnya adalah saya tidak memuat underscore.js. Saya benar-benar merindukan ketergantungan itu di dokumen. Duh.

Klarifikasi lebih lanjut dari @tjorriemorrie: Saya telah menggarisbawahi, tetapi memuat dalam urutan yang salah, muat pertama garis bawah (tebak itulah yang dimaksud dengan 'ketergantungan' :)


Klarifikasi Lebih Lanjut kalau-kalau ini tidak jelas. Urutan hal-hal yang dimuat di JavaScript berkaitan dengan urutan kemunculan di halaman. Untuk memuat garis bawah terlebih dahulu, pastikan bahwa tag skrip termasuk itu ada sebelum tulang punggung pemuatan. Seperti ini:

<script src="underscore-1.4.4-min.js"></script>
<script src="backbone-1.0.0-min.js"></script>
Matt Darby
sumber
2
Terima kasih banyak, bingung apa yang saya lakukan salah, dan mengapa saya bahkan tidak bisa memuat tulang punggung!
Victor Farazdagi
22
Saya memiliki garis bawah, tetapi memuat dalam urutan yang salah, pertama memuat garis bawah (tebak itulah arti 'ketergantungan' :)
Tjorriemorrie
11
4.600+ penayangan dan 55 suara positif kemudian tampaknya banyak orang yang melewatkan persyaratan. Mungkin mereka harus lebih diucapkan.
Xeoncross
@Matt Darby: bisakah Anda menambahkan komentar dari Tjorriemorrie ke dalam jawaban?
sumid
2

Ketergantungan keras hanya tulang punggung adalah Underscore.js memuat skrip underscorejs sebelum skrip backbonejs

Somnath Kokane
sumber
1

Urutan juga penting. Saya mendapat kesalahan yang sama dan itu tidak terselesaikan sampai saya memberikan underscore.js sebelum backbone.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>
Haris Np
sumber