Crossroads.js - 路线选择

时间:2012-05-14 10:08:25

标签: javascript url-routing

请问有人帮我处理路由规则吗? 路由可选参数约束我遇到了问题。

应该为/ {region} / {category} / {title} /:page:url pattern调用名为'offerRegionCategoryTitle'的路由 - 这样可以正常工作,

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

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

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

1 个答案:

答案 0 :(得分: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