2013-03-29 6 views
1

사용자가지도를 클릭 할 수있는 Google지도가 있으면 모든 곳에서 클릭 이벤트가 양식을 포함하는 부트 스트랩 모달 창을 엽니 다. 내 질문은 마커 컬렉션에 마커를 추가하는 데이 제출 이벤트를 처리하는 방법 및 장소입니다.Google Maps 및 Backbone.js 이벤트 트리거링

현재 Google지도를 렌더링하고 이벤트를 추가하는지도보기가 있습니다. 클릭에 대한 청취자. 지도를 클릭하면 모달이 열립니다.

App.Views.Map = Backbone.View.extend({ 
... 
initializeMap : function(){} 
... 
addMapEventlistener : function() { 

    google.maps.event.addListener(this.map, 'dblclick', function(event) { 

    var coords = event.latLng.toUrlValue(); 

    var carray = coords.split(","); 

    var model = new Backbone.Model({ coords: carray }); 

    var view = new App.Views.Modal({ model: model }); 

    var $modalEl = $("#modal"); 
    $modalEl.html(view.render().el); 
    $modalEl.modal(); 
    }); 
}  


App.Views.App = Backbone.View.extend({ 

     initialize: function() { 

var addMarkerView = new App.Views.AddMarker({ collection: App.markers }); 

     } 

}); 

// add marker view 

    App.Views.AddMarker = Backbone.View.extend({ 

     el: '#addForm', 

     initialize: function() { 

      $('<input>', { 
       type: 'submit', 
       value: 'Submit', 
       class: 'smt' 
      }).appendTo(this.$el); 

      console.log('AddMarker init run'); // this echoed out 

     }, 

     events: { 
      'submit' : 'addMarker'  
     }, 

     addMarker: function(e) { 

      e.preventDefault(); 

      alert('hello'); 

     }, 

    }); 

내 생각 엔 그지도에 클릭 이벤트 후 렌더링 형태를 내가 모달가 열립니다 든 후 듣기 백본 이벤트를 설정하고, 모음보기에서 양식 제출을 처리해야 맞죠?

답변

0

events 개체를 사용하여 수신기를 바인딩 할 수 있습니다.
이벤트를 (다시) 바인딩 할 때. 뷰가 인스턴스화되면 이벤트 객체에 지정된 리스너는 의 뷰 요소에 바인딩됩니다. 이는 이벤트가 하위 요소를 대상으로하는 경우 그 순간에 자식이 존재하는지 여부가 중요하지 않음을 의미합니다. 이제 setElement 메서드없이 view 요소를 변경하는 특별한 경우에 청취자를 리 바인드해야합니다.

예 :

<div id="#mydiv"></div> 

그리고이 사업부 내부의 버튼에 이벤트를 바인딩 할 (당신은 나중에 몇 가지를 만들 수 있습니다.). 음, here's an example.

+0

의견을 보내 주셔서 감사합니다. 폼에 제출 버튼을 추가하지 않으며 initialize 메소드가 실행됩니다. 다시 한번,이 뷰는 맵을 클릭하기 전에 실행되므로 이번에는 템플릿에만 서식이 있으므로 "라이브"가 아닙니다. 이렇게하면 양식에 제출 단추를 확실히 추가 할 수 없습니다. 기본 게시물을 수정했습니다. ^ – subdesign

0

좋습니다. 내 잘못이야. 잘못된 뷰에 이벤트를 추가 했으므로 App.Views.Modal 뷰에 이벤트를 추가해야합니다 (물론 이벤트는 모달에서 발생합니다). 시간 내 주셔서 감사합니다!