0

我有一个 Backbone.Router 类设置,一切正常。但是,有一点(可能有点阻塞)不便。

为了使用主干路由器导航,我使用以下代码

myrouter.navigate('/search_term/2/filter1+filter2/');

这可以正常工作。但是,URL 的不同参数不会在同一个地方更新。例如,用户可能会转到下一页 (3),并且不应更新搜索词和过滤器。

我想要做的是这样的

myrouter.navigate(':route_id', ':route_value');

例如,我可以做

myrouter.navigate(':query', 'search_term');
myrouter.navigate(':pagination', '5');

Backbone 可以做到这一点吗?如果没有,任何可能的解决方案?

4

2 回答 2

0

您可以自己实现一个功能,扩展主干路由以按照您想要的方式工作。

如果您阅读路由源代码,您会发现它们仅将您的模式转换为正则表达式模式,非常简单,然后将方法目标与正则表达式匹配的参数一起应用。

因此,如果您想要反向路线导航或类似的东西,您可以应用您的自我扩展 Backbone.Route

像这样的东西:

myrouter = Backbone.Router.extends({
    navigate: function(a, b) {
        // Do something with my args here
        var result = doSomething(a, b);

        // Then execute backbone's official navigate with the results
        Backbone.Router.navigate.apply(this, result);
    }
});

创建你的函数来doSomething工作是你需要如何反向创建你的路线。

但是没有 Backbone 原生的方式来做到这一点,路由器不具备高级功能。

于 2013-01-01T22:06:25.280 回答
0

我最终自己解决了这个问题。

解决方案是通过以与提交请求时类似的方式绑定到更改事件来监听模型的更改。

于 2013-01-02T12:24:42.883 回答