Ответ 1
Разница заключается в следующем:
el следует использовать для сохранения ссылки на фактический DOM node, представляющий представление в целом.
Это означает, что вы можете легко выполнять действия с ним с помощью jQuery или w/e. $(this.el).hide() или $(this.el).html( "Я сейчас объект JQuery" );
TagName - это только строка, которая используется для определения типа DOM node 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);
Проблема, с которой вы можете столкнуться, заключается в том, что иногда вы устанавливаете el для создания экземпляра представления, и в этом случае tagName не имеет значения:
var myView = new view({ el: $("someExistingEl") });