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.