0

[편집 1 : 내 HTTP 요청 precising]아우렐 리아 뷰에서 클래스의 기능의 수익을 얻을

내 목표는 문자열로 숫자를 변환하고 브라우저에서 사용자에게 표시하는 비동기 호출을하는 것입니다. 나는 전화를 걸기 위해 aurelia-http-client를 사용하고 있습니다. 먼저 값 변환기를 사용해 보았습니다. 그런 다음이 변환기와 비동기 적으로 아무것도 할 수 없다는 것을 읽었습니다. 지금은 클래스와 함수로 시도하고 있지만 작동하지 않습니다. 여기

interface ITrack { 
    position: number; 
    reference: number; 
    realPosition: number 
} 

class Track implements ITrack { 
    position: number; 
    reference: number; 
    realPosition: number; 

    public getTitle() { 
     console.log('Getting title'); 
     return `This track is the ${this.realPosition} of ${this.reference}.`; 

    let client = new HttpClient(); 
    var json_tmp; 
    var realTitle = 'tmp'; 

    client.get('http://localhost:8800/webservice/' + this.reference) 
     .then(data => { 
     console.log('### START DATA'); 
     console.log(data.response); 
     console.log('### END DATA'); 
     var json_tmp = JSON.parse(data.response); 
     realTitle = json_tmp.tracklist[this.realPosition].title; 
     console.log('### RESPONSE: ' + realTitle); 
     }) 
     .then(function(res) { 
     console.log('### we are sending: ' + realTitle); 
     return(reponse); 
     }); 

    } 
} 

내가보기에 넣어 무엇인가 : 여기 내가 (위치 및 해제 기준을 사용하여 트랙의 실제 제목을 제공하는 웹 서비스를 호출, 모델) 내 * .TS 파일에 넣어 것입니다 :

<span class="position">${track.realPosition}</span>/<span class="reference">${track.reference}</span> 
- <span class="content">${track.getTitle()}</span></p> 

는 "인 getTitle()가"나는 콘솔에서 아무것도 트리거되지 않습니다 ...

내가이 잘못 처리하고 있는가에 의해 "realPosition"제대로 "참조"디스플레이,? 미리 감사드립니다.

+0

에게 그냥 운이 추측을 호출하지 않고 템플릿에서 속성을 읽을 필요하지 대답 : 변경해보십시오'공공 인 getTitle() {'공공의 get 제목 '에() {'와 보기에서 다른 속성과 같이 사용하십시오 :'$ {track.Title} ' – jevgenig

+0

문자열 보간에 함수를 사용할 수 없는지 확실히하십시오. 코드에 HTTP 요청이 어디에 들어 있는지 알 수 없습니까? – Tom

+0

죄송합니다, 너무 많은 줄을 자릅니다. 나는 현재의 문제와 관련이없는 불필요한 라인들로 당신을 귀찮게하고 싶지 않다. – djcaesar9114

답변

0

promise가 필요한 viewmodel 내에 activate 메소드를 작성한 다음 activate() 내부에서 getTitle 메소드를 호출하십시오. 그런 다음 페이지는 제목을로드 한 후에 만로드됩니다. 실행되지 않습니다 그 '복귀'후 기능에

return `This track is the ${this.realPosition} of ${this.reference}.`; 

모든 것을 포함 :

let client = new HttpClient(); 

class Track implements ITrack { 
    position: number; 
    reference: number; 
    realPosition: number; 

    public activate(): Promise <void> { 
     return getTitle(); 
    } 

    public getTitle(): Promise <void> { 
     console.log('Getting title'); 
     //here you can call the aurelia http method like this 
     return httpClient.getTitle().then((data) { 
      this.position = data.position; 
      this.reference = data.reference; 

     }); 

    } 
} 
+0

Mmm 정품 인증은 좋은 해결책이 될 수 있습니다. 내 http 요청을 사용하여 코드를 구현하려고했지만 그것을 얻을 생각하지 않습니다. 나는 초기 요청을 더 자세히 설명하기 위해 초기 게시물을 편집했다 : 나는 2 개의 숫자를 취하여이 숫자를 매개 변수로 사용하여 웹 서비스를 호출 한 후 문자열을 얻는다. – djcaesar9114

관련 문제