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