2013-03-06 1 views
1

Я только начал изучать основы, следующие за этим онлайн ebook.Ошибка при импорте Backbone.js

Но я застрял в создании ToDo App из-за ошибки импорта я действительно не понимаю ...

загрузить Backbone.js и магистральными-min.js от Backbone Official Website

В моем индексе .html Я пытался импортировать Backbone или магистральный-min.js и получил следующие результаты в Firebug консоли:

импорт Backbone.js

<script src="js/lib/zepto.min.js"></script> 
<script src="js/lib/underscore.js"></script> 
<script src="js/lib/backbone.js"></script> 

TypeError: this.$el.off is not a function 
backbone.js line 1325 : this.$el.off('.delegateEvents' + this.cid); 

Импортирующие Магистральные-min.js

<script src="js/lib/zepto.min.js"></script> 
<script src="js/lib/underscore.js"></script> 
<script src="js/lib/backbone-min.js"></script> 

TypeError: this.listenTo is not a function 
app.js line 34 : this.listenTo(app.Todos, 'add', this.addOne); 

app.js имеет в виду this backbone view, вот код экстракт из этого вида:

initialize: function() { 
    this.allCheckbox = this.$('#toggle-all')[0]; 
    this.$input = this.$('#new-todo'); 
    this.$footer = this.$('#footer'); 
    this.$main = this.$('#main'); 

    this.listenTo(app.Todos, 'add', this.addOne); 
    this.listenTo(app.Todos, 'reset', this.addAll); 
    this.listenTo(app.Todos, 'change:completed', this.filterOne); 
    this.listenTo(app.Todos,'filter', this.filterAll); 
    this.listenTo(app.Todos, 'all', this.render); 

    app.Todos.fetch(); 
}, 

Если у вас уже был такой вопрос ... Я должен признать, что я действительно не понимаю, почему у меня ошибка, когда я пытаюсь импортировать магистраль, и я недостаточно опыт, чтобы понять проблему с функцией ListenTo ...

ответ

3

Вы должны включить underscore.js перед тем позвоночнике:

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

http://backbonejs.org/ говорит: только трудно зависимость

Backbone является либо Underscore.js (> = 1.4.3) или Lo-тире. Для сохранения RESTful поддержка истории с помощью Backbone.Router и DOM-манипуляции с Backbone.View включает json2.js и jQuery (> = 1.7.0) или Zepto.

Кроме того, если вы хотите использовать jQuery селекторы ($) в вашем коде, включают в себя JQuery тоже.

+0

Я уже сделал это, я обновил свои вопросы :(проблема не приходит от –

1

1) this.listenTo добавлен в последнюю версию Магистра, поэтому, возможно, библиотека Backbone, которую вы используете, устарела. Попробуйте использовать последнюю версию Backbone. 2) this. $ El: вы должны использовать jQuery для него. Если эта ошибка возникает снова после добавления jQuery, то поставьте console.log (это. $ El) над этой строкой. Если он получает элемент, он будет печатать это иначе [] или undefined.

Согласно официальной документации, единственная жесткая зависимость базовой линии - это либо подстрочный знак, либо знак нижнего предела. Но вы должны использовать RequireJS с ним, чтобы установить порядок загрузки файла js.

1

У меня такая же проблема с одним из проектов, которые я загрузил из github. Я получил последние сценарии из следующих мест, и теперь он работает нормально.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script> 
<script src="http://documentcloud.github.com/underscore/underscore-min.js"></script> 
<script src="http://documentcloud.github.io/backbone/backbone-min.js"></script> 

Приветствия