骨干路由器 - 浏览器后退按钮不触发路由器方法

blu*_*l2k 12 backbone.js

我有一个看似有效的Backbone路由器设置 - 路由被正确触发,视图更新等.但是,当我按下浏览器的"后退"按钮时,根本不会触发路由.此外,在浏览器中键入URL也不会触发路由器.我是否缺少将浏览器特定内容绑定到Backbone(Firefox 11)的步骤.

建立

var messageRouter = new MessageRouter({view: messageListView});
Backbone.history.start();
Run Code Online (Sandbox Code Playgroud)

触发

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

路由器代码

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) {
    }

});
Run Code Online (Sandbox Code Playgroud)

Mar*_*iry 1

您应该使用您已经定义的相同路径来调用router .navigate。IE:

扳机

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

路由器

 routes : {
        "" : "default",
        "/view/:filter" : "filter",
        "camera" : "camera"
    },
Run Code Online (Sandbox Code Playgroud)