我正在尝试更改一个变量以匹配从我的后端通过 WAMP 路由器传入的 JSON。 但是,在我的事件处理程序中,当我尝试使用 console.log() 时,外部变量始终未定义。此外,对事件处理程序中变量的更改不适用于外部变量,我不明白为什么...
这是我的服务,数据应该从后端“到达”并被更改 我真的无法创建一个正在运行的 stackblitz,因为后端数据和 WAMP 需要集成/模拟太多。
export class HouseService {
public JSONObject: any; //this variable does not change
// function called to connect to wamp
constructor(){
this.JSONObject = 'test';
}
getWampCon(){
this.wampConnection.open();
this.wampConnection.onopen = (session) => {
console.log('wamp connected');
session.subscribe('some.wamp.topic', this.onevent1).then(
(subscription) => {
console.log('ok, subscribed with ID ' + subscription.id);
},
(error) => {
console.log(error);
}
);
};
// Event Handler
onevent1(args, kwargs) {
console.log('got event:', args, kwargs);
console.log(this.JSONObject); // returns undefined and i don't get why
this.JSONObject = args[0];
}
}
函数
getWampCon()
然后在显示组件中调用
我想获得类似以下 AngularJS 版本的类似内容:
function onevent1(args, kwargs) {
console.log("got event:", args, kwargs);
var scope = angular.element(document.getElementById('Receiver')).scope();
scope.$apply(function() {
scope.showMe(args[0]);
});
}
答案 0 :(得分:0)
QUERY PLAN
Seq Scan on wstn (cost=0.00..428.42 rows=1567 width=12) (actual time=0.175..9.646 rows=1567 loops=1)
Buffers: shared hit=21
Planning time: 0.086 ms
Execution time: 10.073 ms
因为“this”关键字的作用域与 HouseService 类不同。这是一个关于 javascript 的老故事。
尝试这样做:
console.log(this.JSONObject); // returns undefined and i don't get why