Backbone.js: `extend` non défini?


103

Premiers pas avec Backbone.js. Le simple fait d'inclure Backbone (versions dev / production) provoque l'erreur:

Uncaught TypeError: Cannot call method 'extend' of undefined à la ligne 128:

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

Question: Le combinez-vous avec d'autres bibliothèques JS ainsi qu'avec Backbone? Avez-vous essayé de voir si vous obtenez toujours l'erreur sans eux?
— Spudley

C'est une toute nouvelle application Rails; Je ne charge même pas jQuery! :)
— Matt Darby

Réponses:


216

Le problème était que je ne chargeais pas underscore.js. J'ai totalement manqué cette dépendance dans les documents. Duh.

Précisions supplémentaires de @tjorriemorrie: j'avais un trait de soulignement, mais chargé dans le mauvais ordre, commencez par charger le trait de soulignement (je suppose que c'est ce que signifie `` dépendance '' :)


Clarification supplémentaire juste au cas où cela ne serait pas évident. L'ordre dans lequel les éléments sont chargés en JavaScript est lié à l'ordre dans lequel ils apparaissent sur la page. Pour charger d'abord le trait de soulignement, assurez-vous que la balise de script qui le contient précède celle qui charge le backbone. Comme ça:

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

2
Merci beaucoup, j'étais perplexe sur ce que je fais de mal et pourquoi je ne peux même pas charger la dorsale!
— Victor Farazdagi

22
J'avais un trait de soulignement, mais chargé dans le mauvais ordre, commencez par charger le trait de soulignement (je suppose que c'est ce que signifie `` dépendance '' :)
— Tjorriemorrie

11
Plus de 4600 vues et 55 votes positifs plus tard, il semble que beaucoup de gens ne répondent pas aux exigences. Peut-être devraient-ils être plus prononcés.
— Xeoncross

@Matt Darby: pourriez-vous ajouter le commentaire de Tjorriemorrie dans la réponse?
— sumid

2

Backbone seule la dépendance dure est Underscore.js charge le script underscorejs avant le script backbonejs


1

L'ordre est également important. J'ai eu la même erreur et elle n'a été résolue que lorsque j'ai donné le underscore.js avant 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>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.