我开始学习BackboneJS。这是我的代码:
var TodoItem = Backbone.Model.extend({});
var todoItem = new TodoItem({
description: 'Pick up milk',
status: 'incomplete',
id: 1
});
var TodoView = Backbone.View.extend({
render: function()
{
var html = '<h3>' + this.model.get('description') + '</h3>';
$(this.el).html(html);
}
});
var todoView = new TodoView({ model: todoItem });
todoView.render();
console.log(todoView.el);
但是我收到了这个错误:
Uncaught TypeError: Expecting a function in instanceof check, but got undefined
_.extend._setElement @ backbone.js:1233
_.extend.setElement @ backbone.js:1222
_.extend._ensureElement @ backbone.js:1302
Backbone.View @ backbone.js:1170
child @ backbone.js:1831
(anonymous function) @ (index):28
我做错了什么?我真的不明白我需要在哪里创建它正在等待的功能。
答案 0 :(得分:1)
在backbone.js中,_setElement
用于设置this.$el
和this.el
。您的特定错误发生在以下Backbone.js代码的第一行:
_setElement: function(el) {
this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);
this.el = this.$el[0];
},
正如您所看到的,我们正在检查它是否是Backbone的实例。$,但是基于您的错误Backbone。$ is null。 此错误表示jQuery要么没有加载,要么不在页面上。在页面上包含Backbone之前,请确保包含jQuery。
以下是使用托管这些库的一些CDN所需的示例。
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/backbone.js/1.2.1/backbone-min.js"></script>