我使用AngularUI的路由器庫,我有一個奇怪的問題:我有兩個不同但相似的狀態和控制器。發生什麼是我期望運行的狀態,但是另一個狀態似乎運行:它取回模板UI,然後控制器運行第二個狀態,這會導致一些奇怪的行爲。角度ui.router執行多個狀態
有問題的狀態:
angular.module('app', ['ui.route'])
.config(function ($urlRouterProvider, $stateProvider) {
$urlRouterProvider.otherwise("/");
$stateProvider
.state('list', {
url: "/",
templateUrl: STATIC_URL + "js/eleagemot/views/list.html",
controller: 'questionListCtrl',
})
.state('detail', {
url: '/{username:[a-zA-Z0-9\\-]+}/{slug:[a-z0-9\\-]+}/',
templateUrl: STATIC_URL + "js/eleagemot/views/detailed_question.html",
controller: 'questionDetailCtrl'
})
.state('newQuestion', {
url: '/new-question/',
templateUrl: STATIC_URL + "js/eleagemot/views/edit_question.html",
controller: 'editQuestion'
})
.state('questionEdit', {
url: '/{username:[a-zA-Z0-9\\-]+}/{slug:[a-z0-9\\-]+}/edit/',
templateUrl: STATIC_URL + "js/eleagemot/views/edit_question.html",
controller: 'editQuestion'
})
.state('answerEdit', {
url: '/answer/{id:[0-9]+}/edit/',
templateUrl: STATIC_URL + "js/eleagemot/views/edit_answer.html",
controller: "editAnswer"
})
});
究竟會發生什麼,如果是我去/answer/1/edit/
它首先加載edit_answer.html
模板和運行editAnswer
控制器,因爲它應該。但是,它也會加載edit_question.html
模板並運行editQuestion
控制器。我知道,因爲有一些Restangular代碼在editAnswer
控制器中正確運行,然後在editQuestion
控制器中運行一些類似的Restangular代碼,但會導致404,然後路由器將重定向到根。同時在每個控制器的頂部放置一些控制檯日誌,可以看出editAnswer
控制器正在運行,然後是editQuestion
控制器。
此行爲僅在加載answerEdit
狀態的url時出現,並且不適用於其他任何狀態。爲什麼會發生這種情況,我該如何解決?
您應該發佈您的editAnswer控制器,以便我們也可以查看。這可能會導致問題。 –