我想从外部调用angular2服务的方法,并从该方法调用来自同一类的其他方法,或者可以访问构造中的变量。
我正在使用ngZone来创建一个可从外部访问的方法。我的班级看起来像这样:
var Component1 = ng.core.Class({
constructor:[ng.core.NgZone, function(_ngZone) {
window.Component = {
onCallFromOutside: this.onCallFromOutside,
zone: _ngZone
};
this.some_var = "AAA";
}],
onCallFromOutside: function(){
console.log("Called onCallFromOutside")
console.log(this.some_var) // This is null
this.inisdeCall() // Here I get error: EXCEPTION: TypeError: this.inisdeCall is not a function
}
inisdeCall: function(){
console.log("Called inisdeCall")
}
})
我从外面这样称呼这个方法:
window.Component.zone.run(function(){
window.Component.onCallFromOutside(e);
})
这是我得到的错误:
EXCEPTION: TypeError: this.inisdeCall is not a function
我在纯JavaScript中使用angular2
答案 0 :(得分:1)
这里的问题是您引用了一个函数,因此丢失了this
实例。
您可以使用bind
方法将函数绑定到this
对象:
var Component1 = ng.core.Class({
constructor:[ng.core.NgZone, function(_ngZone) {
window.Component = {
onCallFromOutside: this.onCallFromOutside.bind(this), // <-------
zone: _ngZone
};
this.some_var = "AAA";
}],
(...)