Backbone this.el jQuery

时间:2012-06-26 13:47:08

标签: jquery backbone.js

我正在尝试设置Backbone应用程序。下面的代码给出了以下错误:

  

未捕获的TypeError:对象#没有方法'追加'

define(
    [
        'jQuery',
        'Underscore',
        'Backbone',
        'text!templates/start.html'
    ],

    function ($, _, Backbone, startTemplate)
    {
        var StartView = Backbone.View.extend({

            // properties
            el: $('#container'),

            initialize: function ()
            {
                this.render();
            },

            render: function ()
            {
                var template = _.template( startTemplate );
                this.el.append( template );
            }
        });

        return new StartView;
    }

);

但这有效(见'渲染'功能):

define(
    [
        'jQuery',
        'Underscore',
        'Backbone',
        'text!templates/start.html'
    ],

    function ($, _, Backbone, startTemplate)
    {
        var StartView = Backbone.View.extend({

            // properties
            el: $('#container'),

            initialize: function ()
            {
                this.render();
            },

            render: function ()
            {
                var template = _.template( startTemplate );
                $(this.el).append( template );
            }
        });

        return new StartView;
    }

);

我传递$('#container')作为'el'属性,所以我认为这应该可以正常工作。为什么我必须再次使用jQuery表示法。 $(this.el)而不是this.el

许多人提前感谢!

1 个答案:

答案 0 :(得分:13)

在Backbone中,您只需将ID或类名提供给el

el: '#container'

然后,this.el引用DOM元素,并且(如果您正在使用最新的Backbone),this.$el引用jQuery对象。

如果您的Backbone是最新的,则不需要$(this.el)