内鬼一时还真找不出来。
尝试通过编写点击事件在函数内路由至所需页面,结果还是不可达。
<a class="btn btn-success btn-sm" id="butAdd" ng-click="doAdd()">新增药店</a>
//路由至新增药店
$scope.doAdd = function(){
alert("SHQ");
$state.go('SHQ');
};
提示错误如下:
Could not resolve ‘SHQ’ from state ‘shopManag’
把路由中的shop_set_dtl.html页面注释掉,居然还能路由!地址居然还显示!如何是好?
这个问题已经超出了自己的能力范围,实在是没有办法!
真相大白
呵呵…不要管我,让我哭会!为自己的过错哭会
原来自己写有3个路由分别为router.js、router_sys.js、router.shop.js,我就纳了闷了,我说怎么该路由死活都不对呢,原来问题就出在第一个路由上。第一个路由中的路由这是自己给自己埋的一颗雷啊!雷区如下:
//TODO(待考虑)
/*-----------------------药店详情维护------------------------*/
.state('shopDtlManag', {
url: '/shopDtlManag/',
views: { //注意这里的写法,当一个页面上带有多个ui-view的时候如何进行命名和视图模板的加载动作
'': {
templateUrl: 'sys_tpls/rightInfoList.html'
},
'sys_banner@shopDtlManag': {
templateUrl: 'sys_tpls/sys_banner.html'
},
'rightContent@shopDtlManag': {
templateUrl: 'sys_tpls/shop_set_dtl.html'
}
}
})
这样就不难解释为何会出现以上灵异事件了。
将之替换为如下代码,问题迎刃而解!
/*---------------------------新增药店-----------------------------*/
.state('shopAdd', {
url: '/shopAdd/',
views: { //注意这里的写法,当一个页面上带有多个ui-view的时候如何进行命名和视图模板的加载动作
'': {
templateUrl: 'sys_tpls/rightInfoList.html'
},
'sys_banner@shopAdd': {
templateUrl: 'sys_tpls/sys_banner.html'
},
'rightContent@shopAdd': {
templateUrl: 'sys_tpls/shop_add.html' // 路由至新增药店页面
}
}
})
亡羊补牢
既然错误已犯,自己就要悔过了。必须得把这可盲雷拆掉!
不过看过代码,感觉这可暗雷不好拆除。当初自己是本着药店端和后台管理端可以分开登录来设计的。
当初的项目需求是实现两个管理端分别进入自己的登录界面,分别为index_sys.html和index_shop.hml。而自己起初是将两者置于一起的,后来为了分离后,应对交易调用错误如何处置的情况,故保留了index.html。
拆雷时,须将index.html与router同时拆除。
其实,经过对比发现router_sys.js与router.shop.js的唯一不同之处在于以下划红线部分代码:
$stateProvider
其实前端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
这里再分享一个复习的路线:(以下体系的复习资料是我从各路大佬收集整理好的)
**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/topics/618166371)**
《前端开发四大模块核心知识笔记》
![](https://img-blog.csdnimg.cn/img_convert/b6ecb2c71421efff2a0cd1db5a9d4251.png)
最后,说个题外话,我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。