Angularjs 在爱奥尼亚(Cordova)的新窗口/应用浏览器中发布表单
我想将签出表单提交到一个外部url,该url将打开一个新窗口,显示结果,但我无法使我的应用程序在单独的窗口中打开它,也无法使用应用程序内浏览器 到目前为止,我所做的是创建一个包含表单的指令,并从链接器函数在某个点调用submit元素 当我在浏览器中运行时,会打开一个新窗口(如我所愿)当在设备上运行时出现问题,因为它只用新内容替换我视图中的内容,而不打开外部窗口 所以,问题是。。。在设备上运行时,如何在打开新窗口(导航器)或应用程序浏览器时发布此表单,并在其中显示结果Angularjs 在爱奥尼亚(Cordova)的新窗口/应用浏览器中发布表单,angularjs,cordova,ionic-framework,ionic,Angularjs,Cordova,Ionic Framework,Ionic,我想将签出表单提交到一个外部url,该url将打开一个新窗口,显示结果,但我无法使我的应用程序在单独的窗口中打开它,也无法使用应用程序内浏览器 到目前为止,我所做的是创建一个包含表单的指令,并从链接器函数在某个点调用submit元素 当我在浏览器中运行时,会打开一个新窗口(如我所愿)当在设备上运行时出现问题,因为它只用新内容替换我视图中的内容,而不打开外部窗口 所以,问题是。。。在设备上运行时,如何在打开新窗口(导航器)或应用程序浏览器时发布此表单,并在其中显示结果 谢谢 嗯,解决这个问题很复杂
谢谢 嗯,解决这个问题很复杂,但最终解决方案“相当”简单。我将把它贴在这里,以帮助其他面临同样问题的人。如果有人有一个更优雅的解决方案,它将受到欢迎 我最后做的是:
angular.module('starter',['ionic']))
.constant('cartData'{
重定向URL:'https://test.mycart.com/hpp/pay.shtml',
重定向方法:“POST”,
重定向数据:{
'formParam1':'value1',
“formPara2”:“value2”
}
}
)
.controller('InitCtrl',函数($cordovaInAppBrowser,$scope,cartData){
$scope.openView=function(){
var计数器=0;
if(ionic.Platform.isWebView()){
$ionicPlatform.ready(函数(){
//这是cordova应用程序内的web视图
var ref=$cordovaInAppBrowser.open('payment.html','u blank',{location:'yes'});
$rootScope.$on(“$cordovaInAppBrowser:loadstop”,函数(e,事件){
如果(计数器<1){
//防止多次调用回调
$cordovaInAppBrowser.executeScript({
代码:“window.paymentCallback('+angular.toJson(cartData)+');”
});
计数器++;
}
});
});
}
};
})
//然后在payment.js中
window.paymentCallback=null;
角度模块('付款',[]))
.directive('autoSubmitForm',['$timeout','autoSubmitFormDelegate',函数($timeout,autoSubmitFormDelegate){
返回{
替换:正确,
作用域:{},
模板:“”+
''+
''+
''+
'',
链接:函数($scope,element,$attrs){
autoSubmitFormDelegate.submitCallback=函数(数据){
$scope.formData=数据;
$timeout(函数(){
元素[0]。提交();
});
};
}
}
}])
.factory('autoSubmitFormDelegate',函数(){
var delegate={};
delegate.submitCallback=null;
delegate.submitForm=函数(数据){
if(委托.提交回调){
委托。提交回拨(数据);
}
}
返回代表;
})
.controller('PaymentCtrl',函数($scope、$timeout、$window、$sce、autoSubmitFormDelegate){
$window.paymentCallback=函数(数据){
log(“调用回调”);
data.redirectUrl=$sce.trustAsResourceUrl(data.redirectUrl);
$timeout(函数(){
autoSubmitFormDelegate.submitForm(数据);
});
};
})
初始化
打开新视图
好吧,解决这个问题很复杂,但最终解决方案“相当”简单。我将把它贴在这里,以帮助其他面临同样问题的人。如果有人有一个更优雅的解决方案,它将受到欢迎
我最后做的是:
angular.module('starter',['ionic']))
.constant('cartData'{
重定向URL:'https://test.mycart.com/hpp/pay.shtml',
重定向方法:“POST”,
重定向数据:{
'formParam1':'value1',
“formPara2”:“value2”
}
}
)
.controller('InitCtrl',函数($cordovaInAppBrowser,$scope,cartData){
$scope.openView=function(){
var计数器=0;
if(ionic.Platform.isWebView()){
$ionicPlatform.ready(函数(){
//这是cordova应用程序内的web视图
var ref=$cordovaInAppBrowser.open('payment.html','u blank',{location:'yes'});
$rootScope.$on(“$cordovaInAppBrowser:loadstop”,函数(e,事件){
如果(计数器<1){