질문 : 다른보기의 범위 내에 백본보기를 만들면 내부보기가 해당 서식 파일에서 시작된 DOM 이벤트에 응답하지 않고 외부보기가 그 사건들. 아래 예제에서 innerview는 submit 버튼을 가지고 있지만 outerview만이 submitButton의 클릭에 응답합니다.템플릿의 DOM 이벤트에 InnerView가 응답하지 않습니다.
라우터의 각 경로에 대한 새로운 기본보기를 만드는 Backbone 프로젝트를 만들고 있습니다. 기본보기에는 페이지의 다른 부분에 대한 하위보기가있을 수 있습니다. 예를 들어, OrderView의 초기화 기능에서 OrderView 페이지
routes: {
'order': 'orderProduct'
},
orderProduct: function(){
this.loadView(new OrderView());
},
를 만드는 order
경로있다, 나는, 예를 들어, formView을 OrderView에 대한 파단을 만들 수 있습니다.
var OrderView = Backbone.View.extend({
initialize: function(){
$("body").html(this.el);
this.template = _.template($('#order-template').html()),
this.subViews = [];
var formView = new FormView();
this.subViews.push(formView);
this.render();
},
그런 다음 FormView에, 나는 그런 submitButton
var FormView = Backbone.View.extend({
el: '#forForm',
initialize: function(){
this.template = _.template($('#form-template').html());
},
events: {
'click #submitButton' : 'submitForm',
},
submitForm: function(){
...
},
render: function(){
$('#forForm').append(this.template());
return this;
}
});
양식이 페이지로 렌더링 한, 명백한 만들 수 있지만 내가 클릭 할 때 아무 일도 발생하지 제출합니다. 그런 다음 이벤트 처리기 및 해당 함수 'click #submitButton' : 'submitForm',
을 OrderView에 추가하고 제출 이벤트에 응답했습니다. 그래서 내 질문은, 내가 왜 OrderView의 범위 내에서 FormView를 만들 때, FormView는 템플릿의 범위 안에 이벤트에 응답 할 수 없다는 것입니다?
FormTemplate
<script type="text/template" id="form-template">
<button id="submitButton">submit</button>
</script>
업데이트 :
I주의한다 (내주 뷰 렌더링) 폼 템플릿이 순서 템플릿에 포함되고 첨부 된 DOM 요소 (외측보기 그). 이 경우에도 FormView가 응답하는 이벤트가 form-template 내부의 클릭 (즉, submitButton이 클릭 될 때)에서 발생하기 때문에 FormView가 이벤트에 응답 할 수 있다고 가정했습니다.
<script type="text/template" id="order-template">
<div class="container">
<div class='row'>
<div class="col-md-6">
<div id="forForm">
</div>
</div>
<div class="col-md-6">
...ommitted...
</div>
</div>
</div>
</script>
"나는 이벤트 처리기를 추가했다. 이벤트가 트리거되기 전에 이벤트를 정의해야한다는 것은 논리적이지 않습니까? 또한 부모보기 (OrderView)에 정의 된 이벤트가 보이지 않으므로이 이벤트를 어떻게들을 수 있습니까? 아마도 나는 당신의 질문을 오해하고 있습니다. – Trace
@KimGysen FormView는 원래 OrderView에 어떤 이벤트도 정의하지 않았지만, FormView가 (submit-button) id (폼 템플릿에 있음)의 클릭에 응답하지 않는다는 것을 발견하면 나는 양식 템플릿 (즉, 하위보기)을 둘러싼보기가 이벤트에 응답하고 OP에서 언급했듯이. 그러나 나는 단지 테스트했기 때문에 OrderView 코드에 포함시키지 않았다. 내가 원하는 것이 아니기 때문이다. 양식 - 템플리트의 'id'를 클릭하면 FormView (양식 - 템플리트 렌더링)에 응답하고 싶습니다. 지금 지우시겠습니까? – Leahcim
@muistooshort 아래의 내 답변에 설명 된대로 setElement를 사용하여 작업 할 수있게되었지만 설명이 필요한 이유가 확실하지 않습니다. jsfiddle을 설정하고 나중에 게시하려고합니다. – Leahcim