BackboneJS:在哪里声明视图中的函数?

BackboneJS : where to declare the function inside a view?

我开始学习 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

我做错了什么?我真的不明白我需要在哪里创建它正在等待的函数。

在backbone.js中,_setElement用于设置this.$elthis.el。您的特定错误发生在以下 Backbone.js 代码的第一行:

 _setElement: function(el) {
   this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);
   this.el = this.$el[0];
 },

如您所见,我们正在检查它是否是 instanceof Backbone.$,但根据您的错误 Backbone.$ 为空。 此错误表明 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>