2016-11-25 8 views
1

免責事項:私はAureliaを非常に新しくしているので、これは明らかな質問かもしれません。Aurelia:アクティブ化中にビューモデルのプロパティを設定するには?

私は、Aureliaビューモデルでプロパティを設定しようとしているときにjavascriptスコープの問題が発生しています。次のコードでは、私のAPIコールが完了し、activateメソッドで約束を入力すると、 'this'は定義されていません。私がここで間違っていることに関するアイデアは?

import {inject} from "aurelia-framework"; 
import {HttpClient} from "aurelia-http-client"; 

@inject(HttpClient) 
export class ListTasks{ 

    constructor(httpClient) { 
     this.http = httpClient; 
     this.tasks = []; 
    } 

    activate() { 
     this.http.get('api/task').then(function(result){ 
      // 'this' is undefined in the scope of this function 
      this.tasks = result.content; 
     }); 
    } 
} 

答えて

2

ES2015矢印機能が解決することを私の問題は、スコープの問題から来ていたが判明。典型的な無名関数宣言を使用することにより、 'this'のスコープが変更されました。矢印の機能と匿名関数を置き換えることは適切スコープを処理します。

import {inject} from "aurelia-framework"; 
 
import {HttpClient} from "aurelia-http-client"; 
 

 
@inject(HttpClient) 
 
export class ListTasks{ 
 

 
    constructor(httpClient) { 
 
     this.http = httpClient; 
 
     this.tasks = []; 
 
    } 
 

 
    activate() { 
 
     this.http.get('api/task').then(result => { 
 
      // 'this' is undefined in the scope of this function 
 
      this.tasks = result.content; 
 
     }); 
 
    } 
 
}

関連する問題