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)容寫在路由控制器里面。用了路由,就單獨(dú)寫控制器了。
回答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ì)有什么沖突。
控制器可以寫在頁(yè)面中,也可以在路由中配置,并且不會(huì)有什么沖突。
相關(guān)文章:
1. javascript - angularjs中value和constant的區(qū)別(主要是能不能修改的問(wèn)題)2. angular.js - angularjs中如何實(shí)現(xiàn)單擊一個(gè)span標(biāo)簽之后,拿到span標(biāo)簽中的內(nèi)容?3. angular.js - angularjs中添加高德地圖API,地圖顯示不正常,控制臺(tái)報(bào)錯(cuò),何解?4. angular.js - angularjs中的攔截器會(huì)攔截哪些請(qǐng)求?5. angular.js - 在網(wǎng)頁(yè)中加載優(yōu)酷開(kāi)放云中的視頻,在angularJS中就是失敗,在普通的html頁(yè)面中能正常加載6. angular.js - angularjs中路由的HTML5模式下的URL問(wèn)題7. angular.js - angularjs中的$compile怎么理解?8. angular.js - angularjs中 選中checkbox其上一級(jí)加入一個(gè)classname,取消選中去掉classname9. angular.js - angularjs中怎么獲取自定標(biāo)簽里面class里面的css屬性10. angular.js - AngularJS中的$scope的作用相當(dāng)于android中的適配器一樣,這種描述準(zhǔn)確嗎?
