angular.js - 網(wǎng)上都查不到,angularjs中,如果index.html中設(shè)置了控制器還能設(shè)置路由嗎?
問(wèn)題描述
做一個(gè)angular的路由的小例子,發(fā)現(xiàn)如果要設(shè)置路由,頁(yè)面上如果已有controller控制器,則出現(xiàn)報(bào)錯(cuò),刪掉controller控制器之后,路由就正常,這兩者有怎樣的關(guān)系呢?不明白,坐等大神,謝謝解惑!ps:頁(yè)面中的controller控制器有其他用處,此處為了代碼簡(jiǎn)單,刪掉了其中的內(nèi)容。
報(bào)的錯(cuò)誤為:
問(wèn)題解答
回答1:因?yàn)槁酚蓵?huì)有一個(gè)控制器,如果在html頁(yè)面再綁定一個(gè)ng-controller的話,等于有兩個(gè),這會(huì)沖突的。最好將頁(yè)面控制器的內(nèi)容寫(xiě)在路由控制器里面。用了路由,就單獨(dú)寫(xiě)控制器了。
回答2:推薦在路由中配置controller,你可以這樣做
$stateProvider .state(’main’, {url: ’/main’,views: { ’main’:{templateUrl:’app/pages/main/listView/listView.html’,controller:’listViewCtrl’ }} })
這樣就可以把templateUrl指定的模板和你定義的controller對(duì)應(yīng)起來(lái),名字相同就可以了。
另外如果在路由中設(shè)置了controller后,在模板中也設(shè)置了ng-controller,會(huì)出現(xiàn)一些問(wèn)題,比較典型的就是如果這個(gè)頁(yè)面進(jìn)入時(shí)需要發(fā)起請(qǐng)求,你會(huì)發(fā)現(xiàn)它會(huì)重復(fù)發(fā)2次請(qǐng)求
回答3:題目中給出的錯(cuò)誤信息是控制器main沒(méi)有定義。
頁(yè)面可以有多個(gè)控制器,控制器也可以嵌套,并且不會(huì)有什么沖突。
控制器可以寫(xiě)在頁(yè)面中,也可以在路由中配置,并且不會(huì)有什么沖突。
相關(guān)文章:
1. html - angularjs中用ng-repeat生成幾個(gè)radio,怎么設(shè)置radio的默認(rèn)選中項(xiàng)?2. angular.js - angularjs中怎么獲取自定標(biāo)簽里面class里面的css屬性3. html - 求大神!angularjs中錨點(diǎn)鏈接怎么不能用?在angular中有無(wú)類似錨點(diǎn)鏈接功能4. angular.js - angularjs中如何實(shí)現(xiàn)單擊一個(gè)span標(biāo)簽之后,拿到span標(biāo)簽中的內(nèi)容?5. html5 - angularjs中外部模版加載無(wú)法使用6. angular.js - angularjs中路由的HTML5模式下的URL問(wèn)題7. angular.js - angularjs中添加高德地圖API,地圖顯示不正常,控制臺(tái)報(bào)錯(cuò),何解?8. angular.js - Angularjs中點(diǎn)擊事件傳遞參數(shù) 給class更換樣式。9. html - angularJS中switch切換開(kāi)關(guān)按鈕不能操作10. angular.js - angularjs中 選中checkbox其上一級(jí)加入一個(gè)classname,取消選中去掉classname
