BackboneJs:在一个视图中,el:和tagName之间有什么区别:

Mik*_*den 16 javascript backbone.js

我试图围绕这个概念.

你可以为我愚蠢,也许提供一个el:属性和tagName:属性之间差异的简单例子?

在一些示例中,el:有时使用不同的视图而其他视图使用tagName:.

我特意搞乱自己对这个例子的实现

Sky*_*son 17

区别在于:

el应该用于保存对表示整个视图的实际DOM节点的引用.

这意味着您可以使用jQuery或w/e轻松地对其执行操作.$(this.el).hide()或$(this.el).html('我现在是Jquery对象');

TagName只是一个字符串,用于确定el节点的类型.默认值为div,但如果您愿意,可以将其设为任何HTML元素.

考虑:

var view = Backbone.View.extend({
    tagName: 'p',
    initialize: function () {
        _.bindAll(this, 'render');
    },
    render: function() {
        $(this.el).html('I am a jQuery-ized paragraph');
        return this;
    }
});


$(document.body).append(new view().render().el);
Run Code Online (Sandbox Code Playgroud)

您可能遇到的问题是,有时您在视图的实例化上设置el,在这种情况下tagName是无关紧要的:

var myView = new view({ el: $("someExistingEl") });
Run Code Online (Sandbox Code Playgroud)

  • 这可能是我,但我不清楚为什么在示例中使用tagname:'p'而不是el:'p'... (3认同)
  • 它们不能一起使用.如果你直接指定`el`,你的`tagName`将被忽略. (2认同)
  • @KimGysen如果你将`tagName`替换为'el`属性并将你的`el`设置为DOM上不存在的元素(即假设页面上没有'p`标签)会发生什么? (2认同)