我正在尝试使用以下代码创建一个简单的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)
,此代码正常工作知道为什么会发生这种错误以及如何解决它?。提前谢谢。
P.S - 我一直主要关注http://backbonetutorials.com/what-is-a-view/和http://documentcloud.github.com/backbone/#View来创建这个示例骨干js app。
答案 0 :(得分:19)
您应该查看的基本内容:
new BodyView()
包装在jQuery.ready中,如下所示: var BodyView = Backbone.View.extend({
el:$('body'),
initialize : function() {
console.log("view init");
}
});
$(function() {
new BodyView();
});
您的jquery脚本行应该早于Backbone。
您的代码确实有效:http://jsfiddle.net/vTuPJ/
答案 1 :(得分:6)
适合我。尝试将所有Backbone代码包装在documentReady
块中:
$(function(){
// .. your backbone code
});
另一件事是,您可能需要更改脚本加载的顺序: