我对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不会修改我的网址但会触发方法......任何人都可以帮助我吗?
答案 0 :(得分:1)
假设您不想要新的"页面"要显示在历史记录中,您可以直接调用路径处理程序。为了帮助您入门,这是一个简单的示例:
goToIntraRoute: function(route){
if (this.routes[route]) {
this.routes[route]();
}
}
要实际使用该片段,您需要适当地管理上下文(this
)。此外,如果您的路由包含通配符或正则表达式,那么您必须从参数中明确解析这些路由,因为您不会依赖路由器。