如何使用十字路口JS?

时间:2015-09-15 10:46:01

标签: javascript crossroadsjs

我正在试图弄清楚如何使用十字路口JS,如果我走在正确的轨道上会有点困惑。

<!DOCTYPE html>
<html>
<head>
    <title>Testing Cross Roads</title>
</head>
<body>
    <a href="#foo">Testing link</a>

    <script type="text/javascript" src="bower_components/jquery/dist/jquery.min.js"></script>
    <script type="text/javascript" src="bower_components/js-signals/dist/signals.min.js"></script>
    <script type="text/javascript" src="bower_components/crossroads/dist/crossroads.min.js"></script>

    <script type="text/javascript">
        var route1 = crossroads.addRoute('/foo', function(){
            console.log("Hello");
        });
    </script>
</body>
</html>

当我尝试导航到/#foo时,我在控制台中看不到任何输出。这是它应该如何工作?我甚至创建了一个JSFiddle

1 个答案:

答案 0 :(得分:2)

该代码段中有两个问题。

首先,您将路线定义为/foo,但在锚标记中,您调用的#foo完全不同。

其次,十字路口本身并不处理信号调用。您必须在onclick或其他一些事件中调用crossroads.parse('/foo')才能导航到它。使用像这样的锚标签直接赢得了工作。您需要覆盖锚点的默认行为并在路由上调用解析。

类似的东西:

var overrideDefaultAction = function (e) {
    e.preventDefault();
    crossroads.parse('/' + this.href.split('/').pop());
}

var a = document.querySelectorAll('a')
for(i=0;i<a.length;i++){
    a[i].onclick = overrideDefaultAction;
}