# AngularJS靈異代碼事件
**[注:請點擊此處進行充電!](http://blog.csdn.net/sunhuaqiang1/article/details/50134509)**
### 事情原委
router_sys.js源代碼如下:
?
自己在html路由跳轉的代碼如下:
?
但是在實際路由過程中,卻路由到了下面的狀態,相應的頁面中去。
詭異的是在UC上第一次路由正常,第二次還是路由到下面的狀態!路由命名是沒有問題的,卻執行到別路由中去了。費解!
### 驅除內鬼
內鬼一時還真找不出來。
嘗試通過編寫點擊事件在函數內路由至所需頁面,結果還是不可達。
~~~
<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
????????.state('index',?{
????????????url:?'/index',
????????????views:?{
????????????????'':?{
????????????????????templateUrl:?'sys_tpls/home.html'?
????????????????},
????????????????'sys_login@index':?{
????????????????????templateUrl:?'sys_tpls/sys_login.html'
????????????????}
????????????}
????????})
~~~
經過不斷測試,自己必須將這顆暗雷拆除。
經過調試,查出暗雷之后,程序運行正常!╰( ̄▽ ̄)╮
- 前言
- (一)深入理解ANGULARUI路由_UI-ROUTER
- (二)AngularJS路由問題解決
- (四)ANGULAR.JS實現下拉菜單單選
- (五)Angular實現下拉菜單多選
- (六)AngularJS+BootStrap實現彈出對話框
- (七)實現根據不同條件顯示不同控件
- (十)AngularJS改變元素顯示狀態
- (十四)AngularJS靈異代碼事件
- (十七)在AngularJS應用中實現微信認證授權遇到的坑
- (十八)在AngularJS應用中集成科大訊飛語音輸入功能
- (十九)在AngularJS應用中集成百度地圖實現定位功能
- (二十一)Angularjs中scope與rootscope區別及聯系
- (二十三)ANGULAR三宗罪之版本陷阱
- (二十四)AngularJS與單選框及多選框的雙向動態綁定
- (二十五)JS實現導入文件功能
- (二十七)實現二維碼信息的集成思路
- (二十八)解決AngualrJS頁面刷新導致異常顯示問題
- (二十九)AngularJS項目開發技巧之localStorage存儲
- (三十)AngularJS項目開發技巧之圖片預加載
- (三十一)AngularJS項目開發技巧之獲取模態對話框中的組件ID
- (三十二)書海拾貝之特殊的ng-src和ng-href
- (三十三)書海拾貝之簡介AngularJS中使用factory和service的方法
- (三十四)Angular數據更新不及時問題探討
- (三十六)AngularJS項目開發技巧之利用Service&Promise&Resolve解決圖片預加載問題(后記)