angular - Angular,更改事件处理程序外部的变量
问题描述
我正在尝试更改一个变量以匹配通过 WAMP 路由器从我的后端传入的 JSON。但是,在我的事件处理程序中,当我尝试 console.log() 时,外部变量总是未定义。此外,事件处理程序中变量的更改不会应用于外部变量,我不明白为什么......
这是我的服务,数据应该从后端“到达”并被更改我不能真正创建一个正在运行的堆栈闪电战,因为后端数据和 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()
然后在显示组件中调用
我想得到类似于以下 Angular JS版本的东西:
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]);
});
}
解决方案
console.log(this.JSONObject); // returns undefined and i don't get why
因为“this”关键字的范围与 HouseService 类不同。这是一个关于 javascript 的古老故事。
尝试这样做:
session.subscribe('some.wamp.topic',(args,kwargs)=>{ this.onevent1(args,kwargs);}).then(...
推荐阅读
- python - Pandas:如果包含条件则删除一行
- openrefine - Openrefine 重新排列值
- python - GridSearchCV 给出的结果与我的手动调整过程不同
- c++ - 将嵌套类型传递给父类而不在 C++20 中重复自己(DRY)
- wordpress - 将优惠券代码应用于最终总金额,而不是购物车总金额
- postgresql - 使用 in 到 cm 的创建或替换函数的转换函数
- java - 在多线程环境中同步 HashMap 仅用于 put 和 remove
- python - 护士调度示例:防止轮班重叠
- python - ThreadPool 等待池中的线程可用(节流)
- r - 将两对列合并为具有唯一值的两列