Angularjs Braintree onReady未在角度应用范围内开火

Angularjs Braintree onReady未在角度应用范围内开火,angularjs,braintree,Angularjs,Braintree,我在我的角度应用程序中使用。当应用程序加载时,braintree.setup('TOKEN','customer',{})按预期工作。onReady正确启动 这是我的控制器: angular.module('braintree') .controller('BraintreeCtrl', [ function() { var self = this; self.setup = function() { console.log('setup

我在我的角度应用程序中使用。当应用程序加载时,
braintree.setup('TOKEN','customer',{})
按预期工作。
onReady
正确启动

这是我的控制器:

angular.module('braintree')
  .controller('BraintreeCtrl', [
    function() {

      var self = this;

      self.setup = function() {
        console.log('setup braintree');

        braintree.setup('myBTtoken', 'custom', {
          id: 'braintreeForm',
          onReady: function() {
            console.log('on ready');
          },
          hostedFields: {
            styles: {},
            number: {
              selector: '#card-number',
              placeholder: 'Card number'
            },
            cvv: {
              selector: '#card-cvv',
              placeholder: 'CVV'
            },
            expirationMonth: {
              selector: '#card-expiration-month',
              placeholder: 'MM'
            },
            expirationYear: {
              selector: '#card-expiration-year',
              placeholder: 'YY'
            },
            postalCode: {
              selector: '#card-postal',
              placeholder: 'Postal code'
            }
          }
        });
      }     
    }
  ]);
  form(name='braintreeForm', id='braintreeForm', novalidate, ng-init='ctrl.setup()')
    .form-group
      label Card Number
      #card-number

    .form-group
      label CVV
      #card-cvv

    .form-group
      label Expires
      #card-expiration-month

    .form-group
      #card-expiration-year

    .form-group
      label Zip Code
      #card-postal

    button(type='submit') Submit
视图(翡翠):

angular.module('braintree')
  .controller('BraintreeCtrl', [
    function() {

      var self = this;

      self.setup = function() {
        console.log('setup braintree');

        braintree.setup('myBTtoken', 'custom', {
          id: 'braintreeForm',
          onReady: function() {
            console.log('on ready');
          },
          hostedFields: {
            styles: {},
            number: {
              selector: '#card-number',
              placeholder: 'Card number'
            },
            cvv: {
              selector: '#card-cvv',
              placeholder: 'CVV'
            },
            expirationMonth: {
              selector: '#card-expiration-month',
              placeholder: 'MM'
            },
            expirationYear: {
              selector: '#card-expiration-year',
              placeholder: 'YY'
            },
            postalCode: {
              selector: '#card-postal',
              placeholder: 'Postal code'
            }
          }
        });
      }     
    }
  ]);
  form(name='braintreeForm', id='braintreeForm', novalidate, ng-init='ctrl.setup()')
    .form-group
      label Card Number
      #card-number

    .form-group
      label CVV
      #card-cvv

    .form-group
      label Expires
      #card-expiration-month

    .form-group
      #card-expiration-year

    .form-group
      label Zip Code
      #card-postal

    button(type='submit') Submit
然而,当我离开这个页面,然后返回到这个状态,
BraintRectrl
启动,
onReady
从不启动,我不能输入任何数据

当我使用braintree表单返回状态时,如何重新设置braintree???

我在JavaScript SDK上使用braintree

目前还没有官方支持的机制。这是一个我们已经意识到的问题,我们将在未来的版本中提供解决方案。不幸的是,我不能提供这项工作的时间表

同时,我建议联系我们的支持团队(support@braintreepayments.com)并密切关注我们网站上的相关线索。同样,虽然没有官方支持的解决方案,但人们已经找到了一些


很抱歉,我没有更好的消息,但是我们感谢您提出这个问题。

在过去,
braintree.setup()
只能调用一次而不会被窃听

他们现在已经实现了
teardown()
函数,该函数将允许您再次调用
braintree.setup()

简言之,当您想要销毁会话时,可以调用
teardown()
,可能是在离开页面时