Angular 缓存用父子路由 IOS下点击下一个选项导致的页面错乱
现象:
为了子页面返回父页面不刷新,需要用到子路由,如果没有表单,完全是没问题的,当父页面有表单输入,子页面中也有表单输入时,点击键盘的下一项会把父页面显示出来,如下图:
上图中,是子路由界面,光表在最下行,当点击键盘所标注的下一项时,会出现像下图的现像,子页面和父页面同时出现。
解决办法,当去子路由时,隐藏父路由,返回时再显示。写了一个全局的公用方法,如果有碰到相同问题,可以参考
/*加载数据显示loading效果*/ $rootScope.$on("$stateChangeSuccess", function(event, toState, toParams, fromState, fromParams) { // to be used for back button //won't work when page is reloaded. var fromParent = fromState.name.substring(0, fromState.name.lastIndexOf('.')); var toParent = toState.name.substring(0, toState.name.lastIndexOf('.')); //父路由去子路由启动loading,子路由返回到父路由时不启动 if(fromParent == toParent && (fromParent == '' || toParent == '') && typeof fromState.parent == 'undefined' || fromParent.indexOf(toParent) == -1 && fromState.name.indexOf(toState.name) == -1 || fromState.name == toState.name || typeof fromState.parent!='undefined' && fromState.parent != toState.name && toState.parent == fromState.name){ $rootScope.startLoading(); } /* * 解决进入子view时父层view也有输入框时,在子view最后一个输入框点击下一项会弹出父层的bug * 以下变量是隐藏显示父层时使用,变量为"子view名字"+View,例如,配置子view名字为sub,变量刚为subView * 在父层要隐藏显示的地方用ng-show=‘!subView’ */ if(toState.views){ for(var key in toState.views){ if(toState.views.hasOwnProperty(key)){ $rootScope[ key +'View'] = true; } } } if(fromState.views){ for(var key in fromState.views){ if(fromState.views.hasOwnProperty(key)){ $rootScope[key +'View'] = false; } } } });
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· 软件产品开发中常见的10个问题及处理方法
· Vite CVE-2025-30208 安全漏洞
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· MQ 如何保证数据一致性?