不改变路线位置的触发方式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
)。此外,如果您的路由包含通配符或正则表达式,那么您必须从参数中显式解析它们,因为您不会依赖路由器。
我对 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
)。此外,如果您的路由包含通配符或正则表达式,那么您必须从参数中显式解析它们,因为您不会依赖路由器。