Angular 2无法从函数中获取值

时间:2017-05-14 02:06:12

标签: javascript angular

我正在使用musale/angular2-stripe 一切正常,问题是我似乎无法从组件中获取价值。

      openCheckout() {
    this.disabled = true;
    var handler = (<any>window).StripeCheckout.configure({
      key: 'pk_test_tS0hXmE0hfvaaPytUdgRIdwD',
      locale: 'auto',
      token: function (token: any) {
        debugger;
        this.token = token;
        //GET OUT FROM HERE< HTTP POST, EMMIT THE VALUE, ANYTHING!
        debugger;
      }
    });

    handler.open({
      name: 'Demo Site',
      description: '2 widgets',
      amount: 2000
    });

    this.globalListener = this.renderer.listenGlobal('window', 'popstate', () => {
      handler.close();
    });
  }

1 个答案:

答案 0 :(得分:1)

问题似乎是因为您正在使用常规函数将this范围更改为函数对象。

您可以在设置回调之前将另一个变量设置为this,并使用它来保存令牌。

 openCheckout() {
    this.disabled = true;
    let self=this;
    var handler = (<any>window).StripeCheckout.configure({
      key: 'pk_test_tS0hXmE0hfvaaPytUdgRIdwD',
      locale: 'auto',
      token: function (t: any) {
        debugger;
        self.token = t;
        //GET OUT FROM HERE< HTTP POST, EMMIT THE VALUE, ANYTHING!
        debugger;
      }
    });

或者我的首选方法是使用不绑定this的{​​{3}},其值仍然属于该类。

 openCheckout() {
    this.disabled = true;
    var handler = (<any>window).StripeCheckout.configure({
      key: 'pk_test_tS0hXmE0hfvaaPytUdgRIdwD',
      locale: 'auto',
      token: (t: any) => {
        debugger;
        this.token = t;
        //GET OUT FROM HERE< HTTP POST, EMMIT THE VALUE, ANYTHING!
        debugger;
      }
    });