我希望在Backbone中使用多个路由调用相同的函数来传递不同的参数。但是我不希望传递的参数成为URL的一部分。
app.routes = Backboone.Router.extend({
routes: {
"first": "display(0)"
"second": "display(1)"
},
display: function(index){
// do action with index
}
})
通过访问http://myapp.com/first
,display
调用并传递参数0。
当前标记不起作用,我想询问是否有某种方法可以做到这一点,因为据我所知,将参数传递给“display”函数的唯一方法是通过URL。
提前致谢。
答案 0 :(得分:0)
没有很好的方法可以实现这一点,你可以修改execute
里面的args(在每条路线之前调用它),但它似乎是一个hacky方法,你可以解决的问题只是分成几个方法:
app.routes = Backboone.Router.extend({
routes: {
"first": "displayFirst"
"second": "displaySecond"
},
displayFirst: function() {
this.display(0);
},
displaySecond: function() {
this.display(1);
},
display: function(index){
// do action with index
}
})
如果你真的想尝试用一种方法来做,你可以尝试弄乱execute
中的东西:
execute: function(callback, args) {
// mess with stuff before calling the callback, but why?
callback.apply(this, args);
}
答案 1 :(得分:0)
多米尼克托比亚斯的想法会奏效,但如果你有很多不同的参数要通过,这将不会是一个通用的解决方案。
我不知道这是否是最好的方法,但你可以使用EventEmitter,https://github.com/Olical/EventEmitter
然后url由路由触发,但显示功能和参数由eventemitter同时触发。
在我看来似乎更通用。