Javascriptmvc CanJS url更改回#!何时可以执行can.route.ready(true)

Javascriptmvc CanJS url更改回#!何时可以执行can.route.ready(true),javascriptmvc,canjs,canjs-routing,Javascriptmvc,Canjs,Canjs Routing,代码在这里:,但在这里查看实时示例,因为我希望您观察url的更改 请在访问此页面时禁用Chrome缓存(勾选内置Chrome调试器工具中的相关框,在测试期间不要选择调试器) 打开页面时,您会看到hastag变为#!最新的如预期,但当执行了can.route.ready(true)时,它又变回了#空路由。 为什么会有如此奇怪的行为 但是当你有了这个页面的缓存时,它就会工作。我很确定这是一个时间问题。您正在初始化控件并在路由更改事件中立即设置路由。如果延迟设置散列,它将起作用: 我之所以这么做是因为

代码在这里:,但在这里查看实时示例,因为我希望您观察url的更改

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

打开页面时,您会看到hastag变为
#!最新的
如预期,但当执行了
can.route.ready(true)
时,它又变回了
#空路由。
为什么会有如此奇怪的行为


但是当你有了这个页面的缓存时,它就会工作。

我很确定这是一个时间问题。您正在初始化控件并在路由更改事件中立即设置路由。如果延迟设置散列,它将起作用:


我之所以这么做是因为一个小时后,这是唯一让我免于把笔记本电脑扔出窗外的东西。我在11楼,所以它很快就会死掉,我也想这么做。
var AppController = can.Control({

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

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

});