Różnica jest taka:
el powinny być używane, aby zachować odniesienie do rzeczywistego węzła DOM reprezentującego widok jako całości.
Oznacza to, że można łatwo wykonywać na nim czynności za pomocą jQuery lub w/e. $ (this.el) .hide() lub $ (this.el) .html ("Jestem teraz obiektem Jquery");
TagName to tylko ciąg, który jest używany do określenia typu węzła DOM, który będzie el. Domyślnie jest to div, ale jeśli chcesz, możesz zrobić z niego dowolny element HTML.
Rozważmy:
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);
Problem może być uruchomiony na to, że czasem trzeba ustawić el na instancji z widoku, w którym to przypadku zmienna jest bez znaczenia:
var myView = new view({ el: $("someExistingEl") });
el odniesie się do istniejących elementów w naszym DOM, natomiast tagName utworzymy nowy element dom z tagName z className, jeśli zostanie podany. – STEEL