0

브라우저의 뒤로 버튼을 클릭하면 현재보기의 deleteMarker 함수를 호출하고 싶습니다. 나는 비슷한 질문을했지만 아무도 나를 도울 수 없었다.백본 : 브라우저의 뒤로 버튼을 클릭하면보기의 기능을 호출합니다.

내가 뒤로 버튼을 클릭 기능 deleteMarker 호출 할

현재보기 : 검사는 history.back

ev.views.Evento = Backbone.View.extend({ 
    map: 'null', 
    initialize: function(id){ 
     ..... 
    }, 
    // function that will call 
    deleteMarker: function(){ 
     this.marker.remove(); 
    },  
    render: function(id){ 
     ..... 
    } 

}); 

var ev = new Application(); 

ev.Router = Backbone.Router.extend({ 

    routes: { 
     "": "home", 
     "evento/:id" : "evento" 
    }, 
    home: function(){ 
     setTimeout(function(){ 
      $('#rightcolumn').html(new ev.views.Home_Eventos(ev.shell.map).el); 
     }, 0); 

    }, 
    evento: function(id){ 
     $('#rightcolumn').html(new ev.views.Evento(id).el);  
    } 
}); 

$(document).on('ready', function() { 
    ev.templateLoader.load(['shell', 'home_list_eventos', 'evento'], function() { 
     ev.shell = new ev.views.Shell({el: "#shell"}); 
     ev.router = new ev.Router(); 
     Backbone.history.start(); 
    }); 
}); 
+0

ev.Router.home에서 왜 milliseconds 매개 변수가 0 인'setTimeout'을 호출하고 있습니까? 이것이 저에게'setTimeout'의 요점을 무력화시킨 것 같습니다. – 76484

+0

이 패턴에 대한 흥미로운 토론을 검색하여 발견했습니다. http://stackoverflow.com/questions/779379/why-is-settimeoutfn-0-sometimes-useful – 76484

+0

http://stackoverflow.com/questions/14543245/browser- back-button-handling http://stackoverflow.com/questions/25806608/how-to-detect-browser-back-button-event-cross-browser 그냥'Router'에서 이벤트를 듣고 Backbone 이벤트를 트리거합니다. 보기는 그것의 일을 경청하고 있을지도 모른다. –

답변

0

여기에서 해결할 해결책을 찾았습니다 : Backbone.js history 'on route change' event. 여기에 내 해결책이있다 :

내가 브라우저의 뒤로 버튼을 누르면 경로가 집에 있는지 확인한다. 그런 다음 원하는 기능을 실행하십시오. 나는 이것이 당신을 미래에 도와주기를 바랍니다.

+0

'if' 컨트롤을 제거하고 "route : home"이벤트에 가입하면 더 예쁘게 만들 수 있습니다. – 76484

0

나는 이벤트를 필터링 .onpopstate 기능을 사용을 app.js입니다()가 실행되었습니다. 어떤 객체가 콜백에 전달되는지 잘 모르겠습니다. 따라서 "이벤트"가 구조화 된 필터가 적절한 지 확인하십시오.

window.onpopstate = function(event) { 
    if(event == "Backbone.history.back()") triggersomething(); 
}; 

알려 주시면 알려드립니다. 희망이 도움이됩니다.

+0

죄송하지만 귀하의 솔루션이 제 경우에는 작동하지 않습니다. 협조 해 주셔서 감사합니다. – seal

관련 문제