簡體   English   中英

AngularJS http發布並重定向到支付網關

[英]AngularJS http post and redirect to payment gateway

在AngularJS中,我要發布一組數據並重定向到付款網址。 我添加了以下功能和指令來實現此目的。

但是我不能達到相同的目的,並得到以下兩個錯誤$interpolate:interrTypeError: element.submit is not a function錯誤。

如何解決AngularJS報告的錯誤? 我是AngularJS的新手,所以無法理解發生了什么。

$scope.transaction = function () {
    var data = $scope.details;
    var formData = {
        redirectUrl: 'https://payment-gateway-url',
        redirectMethod: 'POST',
        redirectData: {
            id: data.id,
            para1: data.para1
        }
    };
    $rootScope.$broadcast('gateway.redirect', formData);
    $scope.$emit('gateway.redirect');
};

app.directive('autoSubmitForm', ['$timeout', function($timeout) {
    return {
        replace: true,
        scope: {},
        template: '<form action="{{formData.redirectUrl}}" method="{{formData.redirectMethod}}">' +
            '<div><input name="{{key}}" type="hidden" value="{{val}}" /></div>' +
            '</form>',
        link: function($scope, element, $attrs) {
            $scope.$on($attrs['event'], function(event, data) {
                $scope.formData = data;
                console.log('redirecting now!');
                $timeout(function() {
                    element.submit();
                })
             })
        }
    }
}]);

<div auto-submit-form event="gateway.redirect"></div>

問題在於該指令未在模板中插值actionmethodnamevalue的值 並且element引用定義了指令的div,因此element實際上不是形式。 您可以按照我向您展示的方法來嘗試。 我動態生成表單,最后使用jQuery提交。

app.directive('autoSubmitForm', ['$interpolate', function($interpolate) {
  return {
    replace: true,
    scope: {
      formData: '='
    },
    template: '',
    link: function($scope, element, $attrs) {
      $scope.$on($attrs['event'], function(event, data) {
        var form = $interpolate('<form action="{{formData.redirectUrl}}" method="{{formData.redirectMethod}}"><div><input name="id" type="text" type="hidden" value="{{formData.redirectData.id}}"/></div></form>')($scope);
        console.log(form);
        jQuery(form).appendTo('body').submit();
      })
    }
  }
}]);

https://plnkr.co/edit/OUu9XgtMttPCri3KvapJ?p=preview

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM