Undefined не является функцией в Backbone.js

Я получаю сообщение об ошибке «undefined is not a function» при локальном запуске этого кода и с общедоступного URL-адреса Dropbox, http://dl.dropbox.com/u/6862628/backbone.html.

Однако, когда я запускаю его на jsfiddle, он работает как положено: http://jsfiddle.net/fdKKD/

Короче говоря, я создаю простую модель и простое представление. Когда я устанавливаю свойство модели, представление console.log «рендерится».

Я вижу такое же поведение в Chrome 17 и Safari, Mac.

Это сводит меня с ума. Был бы признателен за помощь.


person Geuis    schedule 03.03.2012    source источник


Ответы (1)


Backbone требует, чтобы jQuery или Zepto были загружены до Backbone, если вы собираетесь выполнять какие-либо манипуляции с DOM (например, если вы используете представление). Ваш HTML включает элементы в следующем порядке:

  1. Подчеркивать.
  2. Магистраль.
  3. jQuery.

Таким образом, Backbone не знает, следует ли ему использовать jQuery или Zepto, когда он загружается, и в итоге вы получаете неопределенное значение, используемое функцией. Ваш исходный jsfiddle использует jQuery на боковой панели, поэтому jQuery будет загружен jsfiddle до ваших тегов <script>, поэтому Backbone видит jQuery, использует его, и все работает. Если вы переключитесь на «Без библиотеки (чистый JS)»:

http://jsfiddle.net/ambiguous/pzgW7/

то вы снова увидите свою ошибку. Если вы сначала включите jQuery:

http://jsfiddle.net/ambiguous/C32Gd/

вещи будут работать.

person mu is too short    schedule 03.03.2012
comment
Благодарю вас! Это сводило меня с ума. - person Geuis; 03.03.2012