我有一个ES6类,它有一个延迟对象作为实例变量。我试图访问angularjs promise中的this
对象,类似于以下内容,但this
未定义,根据babel的说法:
class MyClass {
constructor($q) {
this.deferred_ = $q.defer();
}
myMethod() {
this.deferred_.promise.then(data => {
console.log(this);
});
}
}
不知何故,我认为我应该使用两个箭头函数将this
绑定到promise的范围,但我无法弄清楚如何。知道怎么做吗?
答案 0 :(得分:2)
您正在使用的库无关紧要,您无法更改箭头功能的上下文。
var x = 5;
var f = ()=> this.x;
f(); //=> 5
f.call({x:3}); //=> 5
z.bind({x:3})(); //=> 5
因此,正如其他人所评论的那样,在您发布的代码中,this
将引用MyClass
的实例。而且没有任何东西可以改变它。