2011-09-15 4 views
16

저는이 개념을 고민하고 있습니다.BackboneJs : 뷰에서 el :과 tagName의 차이점은 무엇입니까?

나를 바보로 사용할 수 있습니까? el: 속성과 tagName: 속성의 차이점에 대한 간단한 예를 제공 할 수 있습니까?

일부보기에서 다른보기는 el:을 사용하고 다른보기는 tagName:을 사용하는 경우가 있습니다. 나는 특히이 example

+1

el은 DOM의 기존 요소를 참조하며 tagName은 주어진 경우 className이있는 tagName을 사용하여 새 dom 요소를 만듭니다. – STEEL

답변

17

의 차이 내 자신의 구현과 장난하고있어

은 이것이다 :

엘은 전체보기를 나타내는 실제 DOM 노드에 대한 참조를 유지하기 위해 사용되어야한다.

이것은 jQuery 또는 w/e로 작업을 쉽게 수행 할 수 있음을 의미합니다. $ (this.el) .hide() 또는 $ (this.el) .html ('저는 지금 Jquery 객체입니다.);

TagName은 DOM 노드 유형을 결정하는 데 사용되는 문자열입니다. 기본값은 div이지만 원한다면 원하는 HTML 요소를 만들 수 있습니다.

고려 :

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

그래서 그들은 함께 사용하지 않습니까? –

+2

함께 사용할 수 없습니다. 'el'을 직접 지정하면,'tagName'은 무시됩니다. –

+0

함께 사용할 수 있습니다. this.el = $ (somethingelse)를 명시 적으로 설정할 수 없으며 this.tagName을 준수해야합니다. $ (this.el) .html ('some stuff')을 사용하면 this.tagName이 무엇이든간에 내부에있게됩니다. –

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

당신이로 실행 중일 수있는 문제 때때로 당신이 태그 이름이 관련이있는 경우 뷰의 인스턴스에 엘을 설정하는 것이있다

잘 작동해야한다고 생각합니다.

+0

'el : $ (this.tagName)'의'this'는 여러분이 생각하는대로되지 않을 것입니다. –

관련 문제