2012-05-14 83 views
1

请问有人可以帮我配置路由规则吗? 我得到了路由可选参数约束的问题。Crossroads.js - 路由选择

名为 'offerRegionCategoryTitle' 的路线应该调用的/ {地区}/{类别}/{标题} /:页:URL模式 - 这正常工作,

但是当我尝试调用 /{region}/{category} /:page:url(等/ pomorskie/programowanie/1),则处理'offerRegionCategoryTitle'路线。

我认为问题出在路由规则配置中。 有人可以帮我吗?

的源代码: AppRouting:http://jsfiddle.net/kppfP/

回答

2

的问题是,这两条路径基本上符合 “相同” 的字符串。您有3个动态段({region}/{category}/:page:{region}/{category}/{title}),并且路由器没有足够的信息来区分两者。如果:page:始终是数字和{title}是不是你可以添加更多的规则,以确保它不匹配错误路线:

var catRoute = crossroads.addRoute('/{region}/{category}/:page:'); 
catRoute.rules = { 
    page : /^\d+$/ // should be numeric 
}; 

var titleRoute = crossroads.addRoute('/{region}/{category}/{title}/:page:'); 
titleRoute.rules = { 
    title : function(val){ 
    return isNaN(val); // title can't be numeric (should contain at least one char) 
    }, 
    page : /^\d+$/ // should be numeric 
}; 

更多信息,请参见documentation about Route.rulesexamples page