如何直接跳回历史记录,我不希望go()函数多次回调()



我在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),但似乎对导航的响应是异步发生的,因此我将实现更改为上面的代码,而不是尝试使用计时器并变得一团糟。

最新更新