我有一个Backbone.Router类设置,一切都很完美。但是,有一点(可能有点阻塞)的不便。
为了使用Backbone路由器进行导航,我使用以下代码
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可以这样做吗?如果没有,任何可能的解决方案?
答案 0 :(得分:0)
你可以实现一个自己的功能,扩展骨干路径,以你想要的方式工作。
如果您阅读路由源代码,您将看到它们只转换您的regexp模式模式,非常简单,然后使用regexp匹配的参数应用方法目标。
因此,如果您想要一个反向路线进行导航或类似的东西,您可以应用自我扩展的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本地方法可以做到这一点,路由器不会改进高级功能。
答案 1 :(得分:0)
我最终自己解决了这个问题。
解决方案是通过以与提交请求时类似的方式绑定到更改事件来聆听模型的更改。