2016-10-21 3 views
0

나는이처럼 보이는 링크에서 URL의 PARAMS을 얻기 위해 노력하고 있어요 :이처럼 내 컨트롤러에 stateProvider을 사용하고 localhost:8000\testSession\id&otp="otpvalue"잘못된 값이 반환

: URL 형식이 있습니다 localhost:8000\testSession\1&otp="91PVSR" :

class UserTestSessionController { 
    constructor($http, $state, UserTestSessionService, $stateParams) { 
     this.$http = $http; 
     this.$state = $state; 
     this.$stateParams = $stateParams; 
     this.userTestSessionService = UserTestSessionService; 
    } 

    startSession() { 
     let self = this; 
     let sessionId = this.$stateParams.id; 
     let otp = this.$stateParams.otp; 

     this.userTestSessionService.startSession(sessionId, otp).then(function(data) { 
      if(data.isError) { 
       self.$state.go("sessionExpired"); 
      } 
      else { 
       self.$state.go("testingSession"); 
      } 
     }); 
    } 
} 

export default UserTestSessionController; 

그리고 이것은 URL이 상태로 정의하는 방법이다 :

export default angular.module("examino.userTestSession", ["ui.router"]) 
    .config(function($stateProvider) { 
     $stateProvider 
      .state("testingSession", { 
       url: "/testSession/:id?otp", 
       controller: "UserTestSessionController", 
       templateUrl: "./app/components/userTestSession/user-test-session.html", 
       controllerAs: "vm" 
      }) 
}) 

문제는 어디 갔지 발생 n ID 및 OTP 값을 얻으려고합니다.

Id=1&otp="someValue"otpundefined입니다.

enter image description here

컨트롤러에서이 값을 읽을 수있는 올바른 방법은 무엇입니까?

+0

당신이 상태의 URL 사양에서'otp' 부분없이 사용해 볼 수 :이 (URL의 변경)를 시도? – SylvainB

+0

@SylvainB 방금 했었는데, 값은 같습니까? otp 값이 정의되지 않았습니다 ... –

+0

@ nemo_87 URL 템플릿을보다 정확하게 지정하려 했습니까? url : "/ testSession/{id : [0-9] +}? otp" – Nedev

답변

0

경로 신고서에 오류가있는 것 같습니다.

$stateProvider 
     .state("testingSession", { 
      url: "/testSession?:id:otp", 
      controller: "UserTestSessionController", 
      templateUrl: "./app/components/userTestSession/user-test-session.html", 
      controllerAs: "vm" 
     }) 

및 액세스 $ stateParams.id와 $ stateParams.otp