2014-01-21 6 views
2

AngularUI의 라우터 라이브러리를 사용하고 있는데 이상한 문제가 있습니다. 두 개의 별개이지만 비슷한 상태와 컨트롤러가 있습니다. 어떤 상태가 발생하는지는 실행이 예상되는 상태이지만 다른 상태가 실행되는 것입니다. 즉, 템플릿 URL을 가져온 다음 컨트롤러가 두 번째 상태로 실행되어 일부 이상한 동작이 발생합니다. 문제두 개 이상의 상태를 실행하는 각도 ui.router

상태 : 내가 먼저 edit_answer.html 템플릿을로드하고 예상대로의 editAnswer 컨트롤러를 실행 /answer/1/edit/에 가면

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" 
    }) 
}); 

가 정확히 무슨 일하는 것입니다. 그런 다음 edit_question.html 템플릿을로드하고 editQuestion 컨트롤러를 실행합니다. 나는 정확히 editAnswer 컨트롤러에서 실행되는 몇 가지 Restangular 코드가 있기 때문에 editQuestion 컨트롤러에서 실행되는 유사한 Restriction 코드가 발생하지만 404가 발생하고 라우터가 루트로 리디렉션됩니다. 또한 각 컨트롤러의 상단에 콘솔 로그를 두는 것은 컨트롤러가 editAnswer이고 그 다음 컨트롤러가 editQuestion 인 것을 보여줍니다.

이 동작은 다른 상태가 아닌 answerEdit 상태에 대한 URL을로드 할 때만 나타납니다. 왜 이런 일이 일어나고 어떻게 해결할 수 있습니까?

+0

우리는 이것을 볼 수 있도록'''editAnswer''' 컨트롤러를 게시해야합니다. 문제가 원인 일 수 있습니다. –

답변

2

너무 쉽게 일치하는 정규식이있는 것처럼 보입니다. /answer/{id:[0-9]+}/edit/은 위의 url 패턴과 항상 일치합니다 : '{username:[a-zA-Z0-9\\-]+}/{slug:[a-z0-9\\-]+}/edit/

+1

아, 고마워. 질문에 대한 질문 앞에 '/ question'을 추가했습니다. – cellofellow

관련 문제