Backbone.js: ¿`extender` indefinido?


103

Recién comenzando con Backbone.js. El simple hecho de incluir Backbone (ya sea versiones de desarrollo / producción) provoca el error:

Uncaught TypeError: Cannot call method 'extend' of undefined en la línea 128:

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

Pregunta: ¿Lo está combinando con otras bibliotecas JS además de Backbone? ¿Ha intentado ver si sigue apareciendo el error sin ellos?
Spudley

Es una nueva aplicación Rails; ¡Ni siquiera estoy cargando jQuery! :)
Matt Darby

Respuestas:


216

El problema era que no cargaba underscore.js. Extrañé totalmente esa dependencia en los documentos. Duh.

Más aclaración de @tjorriemorrie: tenía un guión bajo, pero lo cargué en el orden incorrecto, primero cargue el guión bajo (supongo que eso es lo que significa 'dependencia' :)


Aclaración adicional en caso de que esto no sea obvio. El orden en que se cargan las cosas en JavaScript se relaciona con el orden en que aparecen en la página. Para cargar el guión bajo primero, asegúrese de que la etiqueta del script que la incluye esté antes de la columna vertebral de carga. Me gusta esto:

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

2
¡Muchas gracias, estaba desconcertado por lo que estoy haciendo mal y por qué ni siquiera puedo cargar la columna vertebral!
Victor Farazdagi

22
Tenía guión bajo, pero lo cargué en el orden incorrecto, primero cargue el guión bajo (supongo que eso es lo que significa 'dependencia' :)
Tjorriemorrie

11
Más de 4.600 visitas y 55 votos positivos más tarde, parece que a muchas personas les faltan los requisitos. Quizás deberían ser más pronunciados.
Xeoncross

@Matt Darby: ¿podrías agregar el comentario de Tjorriemorrie en la respuesta?
sumid

2

La única dependencia de backbone es Underscore.js cargar el script underscorejs antes del script backbonejs


1

El orden también es importante. Recibí el mismo error y no se resolvió hasta que di el subrayado.js antes de 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>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.