AngularJs ui-router 一个template向页面中加载了两次 导致有两个相同ID?

cuiweidev 发布于 2015/07/22 17:00
阅读 3K+
收藏 1

【开源中国 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;
                }//根据当前存手势解锁开关以及解锁状态判断是直接进入还是显示解锁界面

            })



tab为App启动默认加载的,用chrome审查元素可知templates/locker.html已经加载到页面里
,但是onresume调用$state.go时,又把 templates/locker.html加载到页面一次,导致html页面中有两个ID相同的标签



加载中
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部