[英]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.