백본 (Backbone) 달력 응용 프로그램을 만들고자합니다. 모델이 Event
이고 EventView
이고 DailyView
입니다.보기 안의 HTML 요소에서 ID를 가져 오는 중 문제가 발생했습니다.
DailyView
은 시간을 나타내는 셀 목록이 포함 된 표가 포함 된 템플릿을로드합니다 (예 : td #09
). 셀을 클릭하여 id
을 얻으려고하지만, 그럴 경우 실패합니다. 나는 대신에 el: div
을 DailyView
에서 참조하고 있다고 생각합니다.
DailyView = Backbone.View.extend({
tagName: "div",
template: _.template($('#daily-view').html()),
events: {
'click td': 'onClick'
},
initialize: function(){
_.bindAll(this, 'render');
this.model.bind('change', this.render, this);
this.render();
},
render: function(){
$(this.el).html(this.template(this.model.toJSON()));
return this;
},
onClick: function(){
var hour= $(this.el).attr("id");
//This doesn't work
}
나는 (때때로 Event
을 포함, 때로는 빈)의 서브 뷰와 같은 세포를 추가 생각했지만, 나는이 방법을 좋아하지 않는 내가이 DOM에 더 많은 elemtns를 추가하지 않으려는 것 그것이 꼭 필요한 경우는 예외입니다.
div
대신 td
을 참조 할 수있는 방법이 있습니까? 이 게시물에서
첫째, 태그 이름의 속성을 사용하면보기가 표현하고자하는 요소의 유형을 식별합니다. 따라서 'div'가 아닌 'td'가 필요할 것입니다. 둘째, 테이블에 테이블을 추가하려면 테이블에 테이블을 추가해야합니다. 즉, 테이블 마크 업에 직접 추가해야합니다. – kinakuta
['this. $ el'] (http://backbonejs.org/#View-$el)이 이미있을 때는'$ (this.el) '할 필요가 없습니다. 그리고 어쨌든'this.model.bind()'호출에 세 번째 인자를 제공한다면'_.bindAll'에 대한 필요는 없습니다. –
@kinakuta 아니오, 해당 부분에서 'div'가 올바른 것입니다. 'DailyView'는 테이블 (및 셀)을 포함하는 래퍼입니다. 'EventView'는 개별 요소를 나타냅니다. 문제는 표를 나타내는 것과 관련이 없습니다. @muistooshort 감사합니다. 당신 말이 맞습니다. 그것은 javascript (및 jQuery 및 Backbone)을 사용한 첫 번째 응용 프로그램이며 많은 개념을 명확히 할 필요가 있습니다. – AnimusNecandi