0

我在 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;
};

有没有办法解决这种行为?

4

1 回答 1

0

我创建了自己的函数,当我需要上述行为时调用该函数。它要求我自己的应用程序层实现能够忽略除一个 abs(qty) 历史运动之外的所有路由回调。

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

于 2013-06-24T11:14:40.677 回答