BackboneJS:在视图中声明函数的位置?

时间:2015-06-10 20:29:55

标签: javascript backbone.js

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

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

1 个答案:

答案 0 :(得分:1)

在backbone.js中,_setElement用于设置this.$elthis.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>