我在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;
};
这种行为有什么办法吗?
答案 0 :(得分: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),但是看起来响应导航异步发生,因此我将实现更改为上面的代码,而不是尝试使用计时器,并得到所有凌乱。