代码在此处:http://jsfiddle.net/cTpPx/,但请在此处查看实时示例http://fiddle.jshell.net/cTpPx/show/,因为我希望您观察网址更改。
请在访问此页面时停用Chrome缓存(勾选内置Chrome调试工具中的相关复选框,并且在测试期间不要选择调试器)
当您打开页面时,您会看到#!latest
的hastag更改符合预期,但当can.route.ready(true)
执行时,它会更改回#!
空路径。
为什么会出现这种奇怪的行为?
但是当你有这个页面的缓存时,它会起作用。
答案 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');
}
});