做一個angular的路由的小例子,發現如果要設定路由,頁面上如果已有controller控制器,則出現報錯,刪除controller控制器之後,路由就正常,這兩者有怎樣的關係呢?不懂,坐等大神,謝謝解惑! ps:頁面中的controller控制器有其他用處,這裡為了程式碼簡單,刪除了其中的內容。
報的錯誤為:
天蓬老师2017-05-15 17:09:43
因為路由會有一個控制器,如果在html頁面再綁定一個ng-controller的話,等於有兩個,這會衝突的。最好將頁面控制器的內容寫在路由控制器裡面。用了路由,就單獨寫控制器了。
阿神2017-05-15 17:09:43
推薦在路由中配置controller,你可以這樣做
$stateProvider
.state('main', {
url: '/main',
views: {
'main':{
templateUrl:'app/pages/main/listView/listView.html',
controller:'listViewCtrl'
}
}
})
這樣就可以把templateUrl指定的模板跟你定義的controller對應起來,名字相同就可以了。
另外如果在路由中設定了controller後,在模板中也設定了ng-controller,會出現一些問題,比較典型的就是如果這個頁面進入時需要發起請求,你會發現它會重複發2次請求
阿神2017-05-15 17:09:43
題目中給出的錯誤訊息是控制器main
沒有定義。
頁面可以有多個控制器,控制器也可以嵌套,並且不會有任何衝突。
控制器可以寫在頁面中,也可以在路由中配置,並且不會有任何衝突。