Ошибка при создании представления 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-приложения.
Ответы
Ответ 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
- магистральная