使用crossroads.js和hasher.js返回到根页面

时间:2013-07-31 21:35:53

标签: javascript url-routing single-page-application crossroadsjs

我刚开始使用crossroads.jshasher.js,并且成功解析了我的大部分路线。我不明白的是如何回到页面的根目录。我知道我说的不对,但这是我的问题:

  1. 我导航到http://example.com,我看到了我需要看到的内容。

  2. 我将哈希值更改为http://example.com/#/foo,我会做我需要做的更改DOM。

  3. 我尝试在浏览器中单击回来,我在这里很糟糕。

  4. 也许我需要在十字路口定义“根”路线?我是否对历史做错了什么?

1 个答案:

答案 0 :(得分:1)

据我所知,你在两个环境中都处于中途(哈希+十字路口)。

如果根模式匹配,则将带有“root”模式的路由添加到十字路口会触发此路由的已定义处理程序。并且处理程序调用显示根页面内容。

第二个问题是必须配置良好的哈希。查看hasher doc上的hasher.setHash()和hasher.replaceHash()之间的区别。如果要保留历史记录并使用浏览器返回功能,请使用setHash。

整个过程将是:

  1. 通过hasher.setHash(new_hash_value)更改网址,手动在导航栏中输入网址或在浏览器中使用后退按钮
  2. hasher认识到哈希已被更改并触发十字路口以进一步处理新网址
  3. 十字路口解析新哈希并调用显示根页面(这需要具有根哈希模式的路径
  4. 准备好可以听取更改:

    function parseHash(newHash, oldHash){
      crossroads.parse(newHash);
    }
    
    hasher.initialized.add(initialParse); //parse initial hash
    hasher.changed.add(parseHash); //parse hash changes
    hasher.init(); //start listening for hash changes
    

    当然定义了根页面可以调用显示根内容的路由:

    crossroads.addRoute("", function() {
         // call displaying root page
      });