2011-09-15 18 views
16

Kafamı bu konsept etrafında sarmaya çalışıyorum.BackboneJs: Bir görünümde el ile tagName arasındaki fark nedir:

Bunu benim için aptal yerine getirebilir ve belki de el: özniteliği ve tagName: özniteliği arasındaki farkın basit bir örneğini verebilir misiniz?

Bazı örneklerde, farklı görünümler el: bazen kullanılır ve diğerleri tagName: kullanır. Özellikle bu example

+1

el DOM'ımızdaki mevcut öğelere başvuruda bulunurken, etiketAdı verilirse className ile tagName ile yeni bir dom öğesi oluşturacağız. – STEEL

cevap

17

farkı kendi uygulanması ile karıştırmasını ediyorum

şudur:

el bir bütün olarak görünümü temsil eden fiili DOM düğümü bir başvuru korumak için kullanılmalıdır.

Bu, jQuery veya w/e ile kolayca işlem gerçekleştirebileceğiniz anlamına gelir. $ (this.el) .hide() veya $ (this.el) .html ('Artık bir JQ Nesnesi'yim');

TagName yalnızca DOM düğümünün türünü belirlemek için kullanılan bir dizedir. Varsayılan, div'tir, ancak isterseniz, istediğiniz herhangi bir HTML öğesini yapabilirsiniz.

düşünün:

var myView = new view({ el: $("someExistingEl") }); 
+0

Yani hiç birlikte kullanılmıyorlar mı? –

+2

birlikte kullanılamazlar. Doğrudan bir 'el' belirtirseniz, 'tagName' öğeniz göz ardı edilir. –

+0

Birlikte kullanılabilirler, bunu açıkça belirleyemezsiniz .el = $ (somethingelse) ve bunu onurlandırmak için this.tagName. Eğer $ (this.el) .html ('bazı şeyler') kullanırsanız, this.tagName ne olursa olsun içeride olacaktır. –

-3
var View = Backbone.View.extend({ 
    tagName: 'span', 
    id: 'identity', 
    class: 'classy', 
    el: $(this.tagName), // or 
    el: $('<' + this.tagName + ' />', { 
    id: this.id,  // identity 
    'class': this.class // classy 
    }) // this is jQuery shorthand for building an element fyi 
}); 

var view = new View(); 
:

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); 

içine çalışıyor olabilir sorun bazen tagName alakasız bu durumda bir görünüm nesnelleştirilmesi, üzerinde el set olmasıdır

Bunun iyi çalışması gerektiğini düşünüyorum.

+0

'' '': '' (this.tagName) 'dır, düşündüğünüz şey olmayacaktır. –

İlgili konular