2016-11-25 3 views
1

Отказ: Я ОЧЕНЬ новичок в Aurelia, так что это может быть очевидный вопрос.Aurelia: Как установить свойство на модели просмотра во время активации?

У меня возникает проблема с областью javascript при попытке установить свойство в модели представления Aurelia. В следующем коде, когда мой вызов API завершен, и я ввожу обещание в методе активации, это «undefined». Любые идеи о том, что я делаю неправильно здесь?

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 решить. Используя типичное анонимное объявление функции, область действия «это» была изменена. Замена анонимной функции с функцией стрелки ручки область правильно:

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