CanJS网址改回#!当can.route.ready(true)执行时

时间:2013-04-30 00:25:12

标签: javascriptmvc canjs canjs-routing

代码在此处:http://jsfiddle.net/cTpPx/,但请在此处查看实时示例http://fiddle.jshell.net/cTpPx/show/,因为我希望您观察网址更改。

请在访问此页面时停用Chrome缓存(勾选内置Chrome调试工具中的相关复选框,并且在测试期间不要选择调试器)

当您打开页面时,您会看到#!latest的hastag更改符合预期,但当can.route.ready(true)执行时,它会更改回#!空路径。 为什么会出现这种奇怪的行为?

但是当你有这个页面的缓存时,它会起作用。

1 个答案:

答案 0 :(得分:2)

我很确定这是一个时间问题。您正在初始化控件并在路径更改事件中立即设置路径。如果您推迟设置哈希值,则可以:http://jsfiddle.net/cTpPx/2/

var AppController = can.Control({

    'route': function(){
        log('route empty');
        setTimeout(function() {
            window.location.hash = '#!latest';
        }, 10);
    },

    'latest route': function() {
        log('route: /latest');
    }

});