我正在我的离子应用程序中实施 PayYouMoney 支付网关,为此我必须调用网络视图页面进行支付交易,我希望应用程序回到我的离子 thankyou 和根据网络视图网址条件,来自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);
}
为什么 this.navCtrl.setRoot()无法正常工作,我该如何实现?
答案 0 :(得分:0)
只需编译并在手机上运行即可。它不会在浏览器上工作,但会在手机上工作。
答案 1 :(得分:0)
this.navCtrl.setRoot()
,此指的是 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/