Backbone.js: `extent` undefined?


103

Ho appena iniziato con Backbone.js. Includere semplicemente Backbone (entrambe le versioni di sviluppo / produzione) causa l'errore:

Uncaught TypeError: Cannot call method 'extend' of undefined sulla linea 128:

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

Domanda: lo stai combinando con altre librerie JS oltre a Backbone? Hai provato a vedere se ricevi ancora l'errore senza di loro?
Spudley

È una nuovissima app Rails; Non sto nemmeno caricando jQuery! :)
Matt Darby

Risposte:


216

Il problema era che non stavo caricando underscore.js. Mi mancava totalmente quella dipendenza nei documenti. Duh.

Ulteriori chiarimenti da @tjorriemorrie: avevo il carattere di sottolineatura, ma caricato nell'ordine sbagliato, il primo carico di sottolineatura (immagino che sia ciò che significa "dipendenza" :)


Ulteriori chiarimenti nel caso in cui ciò non sia ovvio. L'ordine in cui le cose vengono caricate in JavaScript si riferisce all'ordine in cui vengono visualizzate nella pagina. Per caricare prima il carattere di sottolineatura, assicurati che il tag dello script che lo include venga prima di quello del backbone di caricamento. Come questo:

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

2
Grazie mille, sono rimasto perplesso su cosa sto facendo di sbagliato e perché non riesco nemmeno a caricare la spina dorsale!
Victor Farazdagi,

22
Avevo un carattere di sottolineatura, ma caricato nell'ordine sbagliato, primo trattino di sottolineatura di carico (immagino che sia ciò che significa "dipendenza" :)
Tjorriemorrie

11
Oltre 4.600 visualizzazioni e 55 voti positivi in ​​seguito, sembra che molte persone non soddisfino i requisiti. Forse dovrebbero essere più pronunciati.
Xeoncross

@ Matt Darby: potresti aggiungere il commento di Tjorriemorrie nella risposta?
Sumid

2

L'unica dipendenza rigida di Backbone è Underscore.js carica lo script underscorejs prima dello script backbonejs


1

Anche l'ordine è importante. Ho ricevuto lo stesso errore e non è stato risolto fino a quando non ho fornito il underscore.js prima di 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>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.