layui.define(function(exports){
// 定义了一个定时器
let timer = setInterval(()=>{
console.log(1)
}, 1000)
//对外暴露的接口
exports('common', {});
});
然后在跳转页面后,发现这个console仍然在执行。当再次跳转回来,发现时间变快了。也就是说,这个定时器并没有随着页面的跳转,而销毁。不像vue。于是,在官网找有没有监听路由跳转、页面生命周期等的相关方法,发现一无所获。可能layuiAdmin真的没有提供此类方法(我这是layuiAdmin.pro-v1.1.0,为了兼容IE8,只能用它了,新版本不知道)。那么只能自己解决了:方法一:因为我爱模板网用的是单页面的layuiAdmin,所以只要监听hash变化,清除定时器即可:
layui.define(function(exports){
// hash路由改变,清除定时器,这个也可以放在公共js里面,或者放在入口js内。
window.onhashchange = function(){
if(window.timer || window.timer === 0){
clearInterval(window.timer)
}
}
// 定义了一个定时器
window.timer = setInterval(()=>{
console.log(1)
}, 1000)
//对外暴露的接口
exports('common', {});
});
方法二和方法一差不多,只不过不做监听了,调用定时器之前就清楚它:
layui.define(function(exports){
if(window.timer || window.timer === 0){
clearInterval(window.timer)
}
// 定义了一个定时器
window.timer = setInterval(()=>{
console.log(1)
}, 1000)
//对外暴露的接口
exports('common', {});
});
