Backbone this.el 未定义

Backbone this.el is undefined

我一直在关注我在 youtube 上找到的教程。 https://www.youtube.com/watch?v=vPW1inIsln4

在教程中,我没有看到他定义 el : ...但他正在调用 this.$el 并且它似乎可以正常工作。

在 jsfiddle 中,我一直在跟进,但是得到一个 js 错误,说

Backone this.el is undefined

http://jsfiddle.net/tga2La9L/

谁能给我解释一下这是怎么回事?

<div id="canvas"/>

(function() {

var Rectangle = Backbone.Model.extend({});

var RectangleView = Backbone.View.extend({

    tagName: 'div',

    className: 'rectangle',

    render: function() {
        this.setDimensions();
        this.setPosition();
        return this;
    },

    setDimensions: function() {
        this.$el.css({
            width:this.model.get('width') + 'px',
            height: this.model.get('height') + 'px'
        });
    },

    setPosition() {
        var position = this.model.get('position');
        this.$el.css({
            left:position.x,
            top:position.y
        });
    }

});

var myRectangle = new Rectangle({
    width:100,
    height:60,
    position: {
        x:300,
        y:150
    }
});

var myView = new RectangleView({model: myRectangle});

$('div#canvas').append(myView.render().el);

})();

您的 Fiddle 使用的是非常旧的 Backbone、0.3.3 版本,日期为 2010 年 12 月 1 日。更改为当前版本的 Underscore (1.8.3) Backbone (1.2.1) 解决了错误

请参阅 http://jsfiddle.net/nikoshr/tga2La9L/3/ 以获取更新版本