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, 

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>

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


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>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.