Backbone: вызов функции просмотра при нажатии кнопки "Назад" браузера.
Я хочу вызвать функцию deleteMarker
моего текущего вида, когда нажата кнопка назад браузера. Я искал похожие вопросы, но никто не мог мне помочь.
Текущий вид, который я хочу вызвать функцию deleteMarker
когда нажата кнопка назад:
ev.views.Evento = Backbone.View.extend({
map: 'null',
initialize: function(id){
.....
},
// function that will call
deleteMarker: function(){
this.marker.remove();
},
render: function(id){
.....
}
});
app.js
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();
});
});
2 ответа
Я нашел решение, чтобы это работало здесь: история Backbone.js "при изменении маршрута". Вот мое решение:
ev.router.on("route", function(route, params) {
if(route == "home"){
console.log("Different Page: " + route);
that.deleteMarker();
}
});
Когда я нажимаю кнопку "Назад" браузера, он проверяет, является ли маршрут домашним. Если это так, запустите функцию или что вы хотите. Я надеюсь, что это поможет вам в будущем.
Я бы использовал функцию.onpopstate, фильтрующую событие, проверка была вызвана history.back(). Я не уверен, какой объект передается в обратный вызов, поэтому проверьте, как "событие" является структурированным фильтром адекватно.
window.onpopstate = function(event) {
if(event == "Backbone.history.back()") triggersomething();
};
Дайте мне знать, если это работает. Надеюсь, поможет.