不改变路线位置的触发方式backbone.js

Trigger method without change route location backbone.js

我对 backbone.js history 有疑问。

当用户点击 link 时,我停止传播,我想在不更改位置的情况下调用与 href 匹配的方法。

$(document).on("click", "a[href^='/']", function(event){
  event.preventDefault();
  event.stopPropagation();
  Router.goToIntraRoute($(event.target).attr("href"));
});

在 backbone router :

var Router = Backbone.Router.extend({
  routes: {
    "user/:id": "openProfile"
  },

  // Changes the location
  modifyRoute: function(route){
    this.navigate(route, {trigger: true, replace: false});
  },

  // Doesn't change the location
  goToIntraRoute: function(route){
    // URL modified
    this.navigate(route, {trigger: false, replace: false});
  }
});

我希望 goToIntraRoute 方法不会修改我的 url 但会触发该方法...任何人都可以帮助我吗?

假设您不希望新的"page"出现在历史记录中,您可以直接调用路由处理程序。为了帮助您入门,这里有一个简化的示例:

goToIntraRoute: function(route){
    if (this.routes[route]) {
        this.routes[route]();
    }
}

要实际使用该片段,您需要适当地管理上下文 (this)。此外,如果您的路由包含通配符或正则表达式,那么您必须从参数中显式解析它们,因为您不会依赖路由器。