我正在我的 ionic 应用程序中实现PayYouMoney支付网关,为此我必须调用 Web 视图页面进行支付交易,我希望应用程序回到我的 ionic感谢和失败的页面中根据网络视图URL 条件从 webview 。 以下是我的代码:
var url = 'https://www.sansuiscales.com/web/payment.php';
var target = '_blank';
var options = "location = yes"
var ref = cordova.InAppBrowser.open(url, target, options);
ref.addEventListener('loadstart', loadstartCallback);
ref.addEventListener('loadstop', loadstopCallback);
function loadstopCallback(event) {
if(event.url == "https://www.myDomainname.com/web/success.php") {
this.navCtrl.setRoot(thankyou); // not working
// ref.close();
}
if(event.url == "https://www.myDomainname.com/web/failour.php") {
this.navCtrl.setRoot(failed); // not working
// ref.close();
}
}
function loadstartCallback(event) {
alert(event.url);
}
为什么这个.navCtrl.setRoot()不起作用,我该如何实现?
只需编译并在手机上运行即可。它不适用于浏览器,但可以在手机上工作。
this.navCtrl.setRoot()
是在JavaScript函数中调用的,这是指navCtrl不可用的上下文。您需要将其绑定到正确的上下文(使用旧方式self = this
)或考虑改用箭头函数
var loadstopCallback = (event) => {
if(event.url == "https://www.myDomainname.com/web/success.php") {
this.navCtrl.setRoot(thankyou); // not working
// ref.close();
}
if(event.url == "https://www.myDomainname.com/web/failour.php") {
this.navCtrl.setRoot(failed); // not working
// ref.close();
}
}
阅读有关箭头函数的更多信息 https://www.sitepoint.com/es6-arrow-functions-new-fat-concise-syntax-javascript/