this.navCtrl.setRoot 在 Cordova InAppBrowser web-view IONIC 2



我正在我的 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/

最新更新