获取条带标记后,如何在表单中发送其他用户信息 - angular

时间:2015-03-18 22:43:00

标签: javascript angularjs node.js stripe-payments

所以我使用Stripe接受表格上的付款,该表格也包含其他信息 - 姓名 - 地址等。我正在使用以下库:

https://github.com/gtramontina/stripe-angular

我的表单设置如下:

<form id="signup-form" ng-submit="processForm()" stripe:form="saveCustomer">
      <!-- our nested state views will be injected here -->
          <div id="form-views" ui-view></div>
</form>

和嵌套表单视图(非条纹内容)的示例

<div class="form-group">
    <label for="name">Name</label>
    <input type="text" class="form-control" name="name" ng-model="formData.name" required>
</div>

和条纹东西:

<div class="form-group">
    <label for="card_number">Card Number</label>
      <input type="text" class="form-control" size="20" data-stripe="number" ng-model="formData.card"/>
    </div>

我的控制器(仅限相关功能):

// function to process the form
    $scope.saveCustomer = function(status, response) {
            var $form = $('#signup-form');

            if (response.error) {
                // Show the errors on the form
                $form.find('.payment-errors').text(response.error.message);
                $form.find('button').prop('disabled', false);
              } else {
                // response contains id and card, which contains additional card details
                var token = response.id;
                var html = '<input type="hidden" name="stripeToken" ng-model=formData.'+token+'/>';
                // Insert the token into the form so it gets submitted to the server
                $form.append($(html));
                // and submit
                $form.get(0).submit();
                console.log(formData);
             }
        }

这是我的问题 - 如果'saveCustomer'函数等同于条带文档中的stripeResponseHandler函数,那么它们在将标记附加到其后提交表单。如果我要将数据添加到我的formData对象中,如何将此信息添加到该对象中。我现在的逻辑是我在控制器中添加了连接到另一个函数(processForm)的ng-submit属性,但这看起来很垃圾,无论如何我都无法获取数据 - 如何获取令牌和所有其他formData数据如果我在saveCustomer函数中看不到formData,将它发送到服务器?

1 个答案:

答案 0 :(得分:1)

它通过使用jquery直接与Angular-way直接对待DOM。我建议你使用模型对象而不是处理DOM。在示例代码中,模型对象是'formData'。

如果你想访问$ scope.formData,下面的代码可以帮助你这样做。

$scope.formData = {}; 
var formData = $scope.formData;

$scope.saveCustomer = function(status, response) { 
    console.log(formData); // NOT $scope.formData; 
}