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();
};

Дайте мне знать, если это работает. Надеюсь, поможет.

Другие вопросы по тегам