Backbone.js路由器传递不在URL中的参数

时间:2015-08-13 12:28:51

标签: javascript backbone.js

我希望在Backbone中使用多个路由调用相同的函数来传递不同的参数。但是我不希望传递的参数成为URL的一部分。

app.routes = Backboone.Router.extend({
    routes: {
        "first": "display(0)"
        "second": "display(1)"
    },

    display: function(index){
        // do action with index
    }
})

通过访问http://myapp.com/firstdisplay调用并传递参数0。

当前标记不起作用,我想询问是否有某种方法可以做到这一点,因为据我所知,将参数传递给“display”函数的唯一方法是通过URL。

提前致谢。

2 个答案:

答案 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同时触发。

在我看来似乎更通用。