搜尋

首頁  >  問答  >  主體

angular.js - 網路上都查不到,angularjs中,如果index.html中設定了控制器還能設定路由嗎?

做一個angular的路由的小例子,發現如果要設定路由,頁面上如果已有controller控制器,則出現報錯,刪除controller控制器之後,路由就正常,這兩者有怎樣的關係呢?不懂,坐等大神,謝謝解惑! ps:頁面中的controller控制器有其他用處,這裡為了程式碼簡單,刪除了其中的內容。

報的錯誤為:

phpcn_u1582phpcn_u15822819 天前743

全部回覆(3)我來回復

  • 天蓬老师

    天蓬老师2017-05-15 17:09:43

    因為路由會有一個控制器,如果在html頁面再綁定一個ng-controller的話,等於有兩個,這會衝突的。最好將頁面控制器的內容寫在路由控制器裡面。用了路由,就單獨寫控制器了。

    回覆
    0
  • 阿神

    阿神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次請求

    回覆
    0
  • 阿神

    阿神2017-05-15 17:09:43

    題目中給出的錯誤訊息是控制器main沒有定義。

    頁面可以有多個控制器,控制器也可以嵌套,並且不會有任何衝突。

    控制器可以寫在頁面中,也可以在路由中配置,並且不會有任何衝突。

    回覆
    0
  • 取消回覆