我在history.js的顶部使用staterouter.js。当我返回多个页面时,history..js会在内部调用back()相应的次数,这在我的情况下是不可取的,因为我有一个处理程序,它会为每个对back()的中间调用调用调用
History.go = function(index,queue){
//History.debug('History.go: called', arguments);
// Prepare
var i;
// Handle
if ( index > 0 ) {
// Forward
for ( i=1; i<=index; ++i ) {
History.forward(queue);
}
}
else if ( index < 0 ) {
// Backward
for ( i=-1; i>=index; --i ) {
History.back(queue);
}
}
else {
throw new Error('History.go: History.go requires a positive or negative integer passed.');
}
// Chain
return History;
};
有什么办法可以绕过这种行为吗?
我创建了自己的函数,当我需要如上所述的行为时,我会调用它。它要求我自己的应用层实现能够忽略除一个abs(数量)历史移动之外的所有路由回调。
goDirect = function (qty) {
if (qty === -1 || qty === 1) {
router.go(qty);
return;
}
ignoreNavigations = Math.abs(qty) - 1;
router.go(qty);
};
以下代码用作路由处理程序的第一行:
if (ignoreNavigations-- > 0) return;
在调用go(abs(qty)-1)时,我确实尝试过简单地将RouteEnabled标志设置为false,然后将该标志设置回true并调用最终go(-1),但似乎对导航的响应是异步发生的,因此我将实现更改为上面的代码,而不是尝试使用计时器并变得一团糟。