2011-02-02 13 views
101

Po prostu zaczyna się od Backbone.js. Wystarczy w tym (albo wersji dev/produkcja) Backbone powoduje błąd:Backbone.js: `extend` undefined?

Uncaught TypeError: Cannot call method 'extend' of undefined na linii 128:

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

Pytanie: Czy łączysz je z innymi bibliotekami JS, a także z kręgosłupem? Czy próbowałeś sprawdzić, czy nadal otrzymasz błąd bez nich? – Spudley

+0

Jest to zupełnie nowa aplikacja Rails; Nawet nie ładuję jQuery! :) –

+2

Uwielbiam to, że jest to jedno z najlepiej ocenianych pytań w tagu backbone.js – theycallmemorty

Odpowiedz

211

Problem był taki, że nie ładuje underscore.js. Całkowicie tęskniłem za tą zależnością w dokumentach. Duh.

dalsze wyjaśnienia od @tjorriemorrie: miałem podkreślenia, ale załadowany w niewłaściwej kolejności, podkreślenia pierwszy ładunek (przypuszczam, że to co „zależność” oznacza :)


dalszych wyjaśnień na wszelki wypadek tego ISN To oczywiste. Kolejność, w jakiej ładowane są rzeczy w JavaScript, odnosi się do kolejności wyświetlania na stronie. Aby najpierw wczytać podkreślenie, należy się upewnić, że znacznik skryptu, w tym również przed pierwszym ładującym kręgosłupem. Tak:

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

Bardzo dziękuję, zastanawiałem się, co robię źle, i dlaczego nie mogę nawet załadować kręgosłupa! –

+22

Miałem podkreślenie, ale załadowałem w niewłaściwej kolejności, najpierw załadowałem podkreślenie (domyślam się, że to "zależność" oznacza :) – Tjorriemorrie

+11

Ponad 4600 wyświetleń i 55 uptorzeń później wydaje się, że wiele osób nie spełnia wymagań. Być może powinny być bardziej wyraźne. – Xeoncross

2

Backbone tylko ciężko zależność jest underscore.js obciążenie underscore.js skrypt przed backbone.js skryptu

1

zamówienia jest również ważna. Wystąpił ten sam błąd i nie został rozwiązany, dopóki nie podałem pliku underscore.js przed plikiem 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>