【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
用ionic开发App,用的是官方的Tabs模板项目,现在项目中加入手势解锁功能,要求在程序挂到后台唤醒后锁定,故添加了cordova的resume 事件
document.addEventListener("resume", onResume, false); function onResume() { if(tools.storage.getCfg('locker'))//若手势密码启用 $state.go('tab',{'localState':false}, {'reload':true});//从后台唤醒时显示锁屏界面 }
tab的路由配置:
.state('tab', { url: '/tab', params:{'localState':null}, controllerProvider: function ($stateParams) { var ctrlName = ''; //$stateParams.localState:当前解锁状态 tools.storage.getCfg('locker'):手势解锁开关 if ($stateParams.localState || !tools.storage.getCfg('locker')) ctrlName = 'IndexCtrl'; else ctrlName = 'LockerCtrl'; return ctrlName; }, templateUrl: function ($stateParams) { var url = ''; if ($stateParams.localState || !tools.storage.getCfg('locker')) url = 'templates/tab/tabs.html'; else url = 'templates/locker.html'; return url; }//根据当前存手势解锁开关以及解锁状态判断是直接进入还是显示解锁界面 })
,但是onresume调用$state.go时,又把 templates/locker.html加载到页面一次,导致html页面中有两个ID相同的标签