Подтвердить что ты не робот

Ошибка при создании представления backbone.js - ожидание функции в instanceof check, но получило [object Object]

Я пытаюсь создать простой вид backbone.js со следующим кодом:

<!DOCTYPE HTML>
<html>
    <head>
        <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.1/underscore-min.js"></script>
        <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min.js"></script>
        <!--<script type="text/javascript" src="http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"></script> -->
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
    </head>
    <body>
        <script type="text/javascript">
            var BodyView = Backbone.View.extend({
                el:$('body'),
                initialize : function() {
                    console.log("view init");
                }
            });

            new BodyView();
        </script>
    </body>
</html>

Но

Я получаю сообщение об ошибке Ожидание функции в instanceof check, но [Объект Объект]

в этой строке - new BodyView();

Этот код работает, если я использую более старую версию backbone.js(0.3.3)

Любая идея, почему эта ошибка происходит и как ее решить? Спасибо заранее.

PS - Я в основном следил за http://backbonetutorials.com/what-is-a-view/ и http://documentcloud.github.com/backbone/#View для создания этого примера js-приложения.

4b9b3361

Ответ 1

Основные вещи, которые вы должны проверить:

Оберните свой new BodyView() в jQuery.ready вот так:

 var BodyView = Backbone.View.extend({
     el:$('body'),
     initialize : function() {
         console.log("view init");
     }
 });

 $(function() {
        new BodyView();
 });

Загрузите jQuery перед подчеркиванием и магистралью

Ваша строка script для jquery должна быть до строки Backbone.

Ваш код действительно работает: http://jsfiddle.net/vTuPJ/

Ответ 2

Работает для меня. Попробуйте обернуть весь код Backbone в блоке documentReady:

$(function(){
  // .. your backbone code
});​

Другое дело, что, возможно, вам нужно изменить порядок загрузки скриптов:

  • Подчеркивание
  • JQuery
  • магистральная