Javascript Aurelia:如何在激活期间设置视图模型的属性?

Javascript Aurelia:如何在激活期间设置视图模型的属性?,javascript,ecmascript-6,aurelia,Javascript,Ecmascript 6,Aurelia,免责声明:我对Aurelia很陌生,所以这可能是一个显而易见的问题 我在尝试在Aurelia视图模型中设置属性时遇到了javascript作用域问题。在下面的代码中,当我的API调用完成并在activate方法中输入承诺时,“this”是未定义的。你知道我做错了什么吗 从“aurelia框架”导入{inject}; 从“aurelia http客户端”导入{HttpClient}; @注入(HttpClient) 导出类列表任务{ 构造函数(httpClient){ this.http=http

免责声明:我对Aurelia很陌生,所以这可能是一个显而易见的问题

我在尝试在Aurelia视图模型中设置属性时遇到了javascript作用域问题。在下面的代码中,当我的API调用完成并在activate方法中输入承诺时,“this”是未定义的。你知道我做错了什么吗

从“aurelia框架”导入{inject};
从“aurelia http客户端”导入{HttpClient};
@注入(HttpClient)
导出类列表任务{
构造函数(httpClient){
this.http=httpClient;
this.tasks=[];
}
激活(){
this.http.get('api/task')。然后(函数(结果){
//“this”在此函数范围内未定义
this.tasks=result.content;
});
}
}

原来我的问题来自ES2015 arrow函数解决的范围问题。通过使用典型的匿名函数声明,更改了“this”的范围。将匿名函数替换为箭头函数可正确处理作用域:

从“aurelia框架”导入{inject};
从“aurelia http客户端”导入{HttpClient};
@注入(HttpClient)
导出类列表任务{
构造函数(httpClient){
this.http=httpClient;
this.tasks=[];
}
激活(){
this.http.get('api/task')。然后(result=>{
//“this”在此函数范围内未定义
this.tasks=result.content;
});
}
}