没有改变路由位置backbone.js的触发方法

时间:2015-03-24 15:04:45

标签: javascript jquery backbone.js history.js

我对backbone.js history存在问题。

当用户点击链接时,我会停止传播,我想调用与href匹配的方法而不更改位置。

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

在主干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不会修改我的网址但会触发方法......任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

假设您不想要新的"页面"要显示在历史记录中,您可以直接调用路径处理程序。为了帮助您入门,这是一个简单的示例:

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

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