我需要一个客户端路由解决方案来使用Chrome应用。我研究了几个,crossroads.js似乎很合适。当我将它包含在我的html文件中时,它似乎不起作用;也就是说,如果我使用像
这样的代码crossroads.addRoute('/news/{id}', function(id){
alert(id);
});
crossroads.parse('/news/123');
,页面提醒'123'但是如果我在浏览器的url栏中输入'/ news / 321',它会预先形成浏览器的默认操作,而不是警告'321'。我究竟做错了什么。 (另外,我意识到标题很广泛,但我相信我对crossroads.js的困难比crossroads.js更为普遍。这是作为一个例子。)
答案 0 :(得分:8)
使用Hasher(由同一作者)也。
Crossroads页面上的文档告诉您需要使用Hasher,(因为它将用于监视widow.location栏。)。
因此您还需要使用Hasher并初始化它,然后您可以将您的“十字路口”路线添加到Hasher以开始监控这些特定路线。
//setup crossroads
crossroads.addRoute('foo');
crossroads.addRoute('lorem/ipsum');
crossroads.routed.add(console.log, console); //log all routes
//setup hasher
hasher.initialized.add(crossroads.parse, crossroads); //parse initial hash
hasher.changed.add(crossroads.parse, crossroads); //parse hash changes
hasher.init(); //start listening for history change
//update URL fragment generating new history record
hasher.setHash('lorem/ipsum');
答案 1 :(得分:6)
命令parse
告诉十字路口查看字符串并根据它执行操作。
因此,对于crossroads.parse('/news/123');
,它将始终使用/news/123
。
由于您希望十字路口解析浏览器地址栏中的内容,因此您需要在解析方法中使用该值:
crossroads.parse(document.location.pathname);