Подтвердить что ты не робот

Магистральный маршрутизатор - кнопка обратного вызова браузера, а не триггерные маршрутизаторы

У меня установлен базовый маршрутизатор, который, похоже, работает - маршруты запускаются должным образом, обновляются просмотры и т.д. Однако, когда я нажимаю кнопку "Назад" браузера, маршруты не запускаются вообще. Кроме того, ввод URL-адреса в браузер не запускает маршрутизаторы. Есть ли какой-то шаг, который мне не хватает, чтобы привязать конкретные вещи браузера к Backbone (Firefox 11).

Настройка

var messageRouter = new MessageRouter({view: messageListView});
Backbone.history.start();

Trigger

Backbone.history.navigate("#/view/" + $(this).data("filter-type"), {trigger: true});

Код маршрутизатора

var MessageRouter = Backbone.Router.extend({

    view : null, /* should always be overridden */

    initialize : function(options)
    {
        this.view = options.view;
    },

    routes : {
        "" : "default",
        "/view/:filter" : "filter",
        "camera" : "camera"
    },

    default : function() {
    },

    filter : function(filterString) {
        this.view.setFilter(filterString);
        this.view.rerender();
    },

    camera : function(cameraString) {
    }

});
4b9b3361

Ответ 1

Вы должны назвать маршрутизатор.navigate, используя тот же путь, который вы уже определили. то есть:

триггер

messageRouter.navigate("/view/" + $(this).data("filter-type"), {trigger: true});

маршрутизатор

 routes : {
        "" : "default",
        "/view/:filter" : "filter",
        "camera" : "camera"
    },

Ответ 2

Это может быть слово default, которое испортило его как зарезервированное слово.

Либо поставить кавычки вокруг ключа "по умолчанию" в MessageRouter, либо называть его чем-то другим, например "defaultRoute".

'default': function() {},
defaultRoute: function() {}

http://jsfiddle.net/uwjDq/2/ - Здесь работает ОК, включая кнопку "Назад".

Ответ 3

это может быть слишком поздно.. но у меня была одна и та же проблема, и оказалось, что я случайно отменил все события из объекта window, и эта история с базой данных прослушивала события в окне