0

にクラスの関数の戻りを取得します。私はaurelia-http-clientを使って電話をしています。 まず、バリューコンバータを試してみましたが、ここではこれらのコンバータと非同期のことはできません。今私はクラスと関数で試していますが、どちらもうまくいかないようです。ここ は、私は私の* .TSファイルに入れるものです(モデル、その位置を使用して、トラックの真のタイトルを与えるWebサービスを呼び出し、参照を解放する):[私のhttpリクエストをprecising EDIT 1]アウレリアビュー

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

    } 
} 

そして、ここでは、私はビューに入れものです。

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

正しく「realPosition」と「参照」の表示は、「あるgetTitle()」トリガされません、私はコンソールに何もないことで...

は、私はこの間違った取り扱いのですか? ありがとうございます!

+0

幸運なことに、答えはありません: 'public getTitle(){'を 'public get Title(){' '$ {track.Title}' – jevgenig

+0

文字列補間で関数を使うことはできません。あなたのコードでHTTPリクエストがどこに当てはまるのか分かりません。 – Tom

+0

申し訳ありませんが、私はあまりにも多くの行をカットします。私は現在の問題とは関係のない不要な線であなたを悩ませたくありません。 – djcaesar9114

答えて

0

あなたのviewmodel内にactivateメソッドを書きます。これは、promiseを期待し、activate()内のgetTitleメソッドを呼び出します。その後、タイトルは読み込まれた後にのみ読み込まれます。

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つの数字をとり、これらの数字をパラメータとしてWebサービスを呼び出した後に文字列を取得します。 – djcaesar9114

0

私はこのreturn文の使用は何かわからない:

let client = new HttpClient(); 

:その '復帰' 後の機能で

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

すべてが含めて、実行されませんすでに他の人に指摘されているように、Aureliaスケルトンの例(https://github.com/aurelia/skeleton-navigation/blob/master/skeleton-typescript/src/users.ts

)で提案されているように、activateメソッドで非同期httpコールを呼び出すことをお勧めします

その後、メソッドを呼び出さずにテンプレートからプロパティを読み取る必要があります

関連する問題