2013-01-01 89 views
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'); 

骨干能做到这一点?如果不是,有什么可能的解决方案

回答

0

我最终自己修复了这个问题。

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

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工作是你如何需要反向创建你的路线。

但是,没有一个骨干原生的方式来做到这一点,路由器不会mutch高级功能。

+0

不知道我是否理解正确。如果用户导航到“/ search_term/pagination /”。为什么我需要再次导航到这个页面,这有什么帮助? –