Backbone.js: `mở rộng` không xác định?


103

Chỉ mới bắt đầu với Backbone.js. Chỉ cần bao gồm Backbone (phiên bản dev / production) sẽ gây ra lỗi:

Uncaught TypeError: Cannot call method 'extend' of undefined trên Dòng 128:

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

Câu hỏi: Bạn có đang kết hợp nó với bất kỳ thư viện JS nào khác cũng như Backbone không? Bạn đã thử xem bạn vẫn gặp lỗi mà không có chúng?
Spudley

Đó là một ứng dụng Rails hoàn toàn mới; Tôi thậm chí không tải jQuery! :)
Matt Darby

Câu trả lời:


216

Vấn đề là tôi không tải underscore.js. Tôi hoàn toàn bỏ lỡ sự phụ thuộc đó trong tài liệu. Tât nhiên.

Làm rõ thêm từ @tjorriemorrie: Tôi đã có dấu gạch dưới, nhưng tải không đúng thứ tự, đầu tiên hãy tải dấu gạch dưới (đoán đó là 'phụ thuộc' có nghĩa là gì :)


Làm rõ thêm chỉ trong trường hợp điều này không rõ ràng. Thứ tự mà mọi thứ được tải trong JavaScript liên quan đến thứ tự hiển thị trên trang. Để tải dấu gạch dưới trước tiên, hãy đảm bảo rằng thẻ script bao gồm nó xuất hiện trước khung tải. Như thế này:

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

2
Cảm ơn bạn rất nhiều, tôi đã phân vân không biết tôi đang làm gì sai và tại sao tôi thậm chí không thể tải xương sống!
Victor Farazdagi

22
Tôi đã có gạch dưới, nhưng nạp theo thứ tự sai, trước hết gạch dưới tải (đoán đó là những gì 'phụ thuộc' có nghĩa là :)
Tjorriemorrie

11
Hơn 4.600 lượt xem và 55 lượt bình chọn sau đó, có vẻ như rất nhiều người đang thiếu các yêu cầu. Có lẽ họ nên rõ ràng hơn.
Xeoncross

@Matt Darby: bạn có thể thêm nhận xét từ Tjorriemorrie vào câu trả lời không?
sumid

2

Backbone chỉ phụ thuộc cứng là Underscore.js tải tập lệnh underscorejs trước tập lệnh backbonejs


1

Thứ tự cũng rất quan trọng. Tôi gặp lỗi tương tự và nó không được giải quyết cho đến khi tôi đưa ra underscore.js trước 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>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.