【发布时间】:2016-11-30 07:27:04
【问题描述】:
不确定我在这里缺少什么。
我需要将data 的输出转换为this.contact。现在,我正在使用静态类变量,但必须这样做似乎很脏。
export class contactEdit {
static t; // static class var
constructor() {
this.id = null;
this.contact = null;
contactEdit.t = this;
}
activate(id) {
this.id = id;
let contact = this.contact; // scoped version of class var
return dpd.contacts.get(id).then(function(data) {
console.log(data);
contactEdit.t.contact = data; // this works
contact = data; // this doesn't
});
}
}
通常我会在 activate() 函数中创建一个 var contact(它在 Chrome 控制台中有效),但这似乎不适用于 ES6。
Chrome 控制台:
var c = null;
undefined
c;
null
dpd.contacts.get('a415fdc8f5a7184d').then(function(data) {
c = data;
});
Object {}fail: (n)then: (e,t)__proto__: Object
c;
Object {firstName: "John", lastName: "Doe", id: "a415fdc8f5a7184d"}
【问题讨论】:
-
你不只是想要
this.contact = data;而不是contact = data;吗? -
static t;不是 ES6。你在用打字稿还是什么的? -
无论如何,您都不应该将 Promise 结果存储为实例属性。如果需要,请存储 promise。
-
@trincot no,
this在 Promise 中不再引用类。那是我的第一次尝试:) -
@Bergi,不是打字稿。不过,一些实验性功能已开启。
标签: promise ecmascript-6 aurelia deployd