gpt4 book ai didi

javascript - Angular 6 : Unable to access js variable in template getting async data

转载 作者:行者123 更新时间:2023-11-30 14:04:17 24 4
gpt4 key购买 nike

我正在尝试在模板上打印 razorpay 提供的银行列表我得到了所有银行列表对象作为响应并将其保存在变量银行中,但是这个变量在模板中什么都不做,即我看不到任何值

我尝试打印下面的代码,但我永远看不到 Hello 正在打印

<h2 *ngIf="banks">Hello</h2>

下面是我从 component.ts 摘录的代码

ngOnInit() {
if (this.common.platformCheck()) {
var razorpay = document.createElement('script');
razorpay.id = 'razorPay'
razorpay.src = 'https://checkout.razorpay.com/v1/razorpay.js';
razorpay.async = true;
razorpay.type = "text/javascript";
var scpt = document.getElementsByTagName('script')[0];
scpt.parentNode.insertBefore(razorpay, scpt);
razorpay.onload = () => {
var options = {
"key": "rzp_test_XXXXXXXXXXX",
"image": 'https://i.imgur.com/n5tjHFD.png'
};
var razorpay = this.windowObj.Razorpay(options);
razorpay.once('ready', function (response) {
this.banks= response.methods.netbanking;
console.log(response.methods);
console.log(razorpay.methods.netbanking);
// response.methods.netbanking contains list of all banks
})
};
}
}

最佳答案

   razorpay.once('ready', function (response) {
this.banks= response.methods.netbanking;
console.log(response.methods);
console.log(razorpay.methods.netbanking);
// response.methods.netbanking contains list of all banks
})

问题出在 function 关键字中,因为在该功能 block 中使用的 this 将与函数本身相关,而不是组件的 this。只需将其更改为:

   razorpay.once('ready', (response) => {
this.banks= response.methods.netbanking;
console.log(response.methods);
console.log(razorpay.methods.netbanking);
// response.methods.netbanking contains list of all banks
})

它应该可以工作,因为 this 将引用组件的 this,填充正确的组件属性。

关于...“this”的更多阅读:

关于javascript - Angular 6 : Unable to access js variable in template getting async data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55747645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com