簡體   English   中英

Angular 2無法從函數中獲取價值

[英]Angular 2 can't get value from function

我正在使用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();
    });
  }

問題似乎是因為您正在使用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;
      }
    });

或者我更喜歡的替代方法是使用Arrow函數 ,該函數不綁定this 函數 ,並且其值仍屬於該類。

 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;
      }
    });

暫無
暫無

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

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