Backbone.js: `verlängern` undefiniert?


103

Ich fange gerade mit Backbone.js an. Das einfache Einschließen von Backbone (entweder Entwicklungs- / Produktionsversion) verursacht den Fehler:

Uncaught TypeError: Cannot call method 'extend' of undefined in Zeile 128:

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

Frage: Kombinieren Sie es mit anderen JS-Bibliotheken sowie mit Backbone? Haben Sie versucht zu sehen, ob Sie den Fehler immer noch ohne sie erhalten?
Spudley

Es ist eine brandneue Rails-App. Ich lade nicht einmal jQuery! :)
Matt Darby

Antworten:


216

Das Problem war, dass ich nicht geladen habe underscore.js. Ich habe diese Abhängigkeit in den Dokumenten total vermisst. Duh.

Weitere Klarstellung von @tjorriemorrie: Ich hatte einen Unterstrich, aber in der falschen Reihenfolge geladen, zuerst den Unterstrich laden (denke, das ist, was "Abhängigkeit" bedeutet :)


Weitere Klarstellung für den Fall, dass dies nicht offensichtlich ist. Die Reihenfolge, in der Dinge in JavaScript geladen werden, bezieht sich auf die Reihenfolge, in der sie auf der Seite angezeigt werden. Um zuerst den Unterstrich zu laden, stellen Sie sicher, dass das Skript-Tag einschließlich des vorangestellten Backbones steht. So was:

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

2
Vielen Dank, war verwirrt, was ich falsch mache und warum ich nicht einmal das Rückgrat laden kann!
Victor Farazdagi

22
Ich hatte Unterstrich, aber in der falschen Reihenfolge geladen, zuerst Unterstrich laden (denke, das ist, was "Abhängigkeit" bedeutet :)
Tjorriemorrie

11
Über 4.600 Aufrufe und 55 Upvotes später scheinen viele Leute die Anforderungen zu verfehlen. Vielleicht sollten sie ausgeprägter sein.
Xeoncross

@ Matt Darby: Könnten Sie den Kommentar von Tjorriemorrie in die Antwort einfügen?
Summe

2

Die einzige harte Abhängigkeit von Backbone ist, dass Underscore.js Unterstrichskript vor Backbonejs Skript lädt


1

Die Reihenfolge ist auch wichtig. Ich habe den gleichen Fehler erhalten und er wurde erst behoben, als ich den Unterstrich.js vor backbone.js angegeben habe.

<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>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.