我使用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控制器,以便我们也可以查看。这可能会导致问题。 –