如何将数据从服务传递到控制器 AngularJS + Stripe
How to pass data from service to controller AngularJS + Stripe
我正在 ionic 应用程序中实施 Stripe 支付方式,需要从服务中获取 token
。
我面临的问题是,StripeService
中的 console.log(token)
正在安慰令牌,但我需要将其传递给我的控制器来做一些额外的事情。
我在 this.open()
方法和 console.log(StripeService.open(amount))
中尝试了 return token;
,但没有成功。
我正在尝试这个 - https://stripe.com/docs/checkout
请告诉我如何将令牌从服务获取到我的控制器。
代码-
以下是我的AngularJS服务代码-
.service('StripeService', function(){
var handler = StripeCheckout.configure({
key: 'pk_test_6776Randomkey8990',
image: '/img/logo.png',
locale: 'auto'
});
this.open = function(amount) {
return handler.open({
name: 'mywebsite.com',
description: 'Pay via stripe',
amount: amount,
token: function(token) {
console.log(token);
}
});
};
});
以下是我在控制器中调用服务的方法-
$scope.clicked = function(amount) {
StripeService.open(amount);
};
您可以使用 promises
来 return 令牌。
服务:
.service('StripeService', ['$q', function($q){
var handler = StripeCheckout.configure({
key: 'pk_test_6776Randomkey8990',
image: '/img/logo.png',
locale: 'auto'
});
this.open = function(amount) {
var deferred = $q.defer();
handler.open({
name: 'mywebsite.com',
description: 'Pay via stripe',
amount: amount,
token: function(token) {
deferred.resolve(token);
}
});
return deferred.promise;
};
}]);
控制器:
$scope.clicked = function(amount) {
StripeService.open(amount).then(function(token){
console.log('token', token);
});
};
我没有测试过,但应该可以!
正如 manzapanza 所说,您可以使用 promise,我个人更喜欢这种新表示法:
服务:
.service('StripeService', ['$q', function($q){
var handler = StripeCheckout.configure({
key: 'pk_test_6776Randomkey8990',
image: '/img/logo.png',
locale: 'auto'
});
this.open = function(amount) {
return $q(function(resolve) {
handler.open({
name: 'mywebsite.com',
description: 'Pay via stripe',
amount: amount,
token: function(token) {
console.log(token);
resolve(token);
}
});
});
};
}]);
控制器:
$scope.clicked = function(amount) {
StripeService.open(amount).then(function(token){
console.log('token', token);
});
};
我正在 ionic 应用程序中实施 Stripe 支付方式,需要从服务中获取 token
。
我面临的问题是,StripeService
中的 console.log(token)
正在安慰令牌,但我需要将其传递给我的控制器来做一些额外的事情。
我在 this.open()
方法和 console.log(StripeService.open(amount))
中尝试了 return token;
,但没有成功。
我正在尝试这个 - https://stripe.com/docs/checkout
请告诉我如何将令牌从服务获取到我的控制器。
代码-
以下是我的AngularJS服务代码-
.service('StripeService', function(){
var handler = StripeCheckout.configure({
key: 'pk_test_6776Randomkey8990',
image: '/img/logo.png',
locale: 'auto'
});
this.open = function(amount) {
return handler.open({
name: 'mywebsite.com',
description: 'Pay via stripe',
amount: amount,
token: function(token) {
console.log(token);
}
});
};
});
以下是我在控制器中调用服务的方法-
$scope.clicked = function(amount) {
StripeService.open(amount);
};
您可以使用 promises
来 return 令牌。
服务:
.service('StripeService', ['$q', function($q){
var handler = StripeCheckout.configure({
key: 'pk_test_6776Randomkey8990',
image: '/img/logo.png',
locale: 'auto'
});
this.open = function(amount) {
var deferred = $q.defer();
handler.open({
name: 'mywebsite.com',
description: 'Pay via stripe',
amount: amount,
token: function(token) {
deferred.resolve(token);
}
});
return deferred.promise;
};
}]);
控制器:
$scope.clicked = function(amount) {
StripeService.open(amount).then(function(token){
console.log('token', token);
});
};
我没有测试过,但应该可以!
正如 manzapanza 所说,您可以使用 promise,我个人更喜欢这种新表示法:
服务:
.service('StripeService', ['$q', function($q){
var handler = StripeCheckout.configure({
key: 'pk_test_6776Randomkey8990',
image: '/img/logo.png',
locale: 'auto'
});
this.open = function(amount) {
return $q(function(resolve) {
handler.open({
name: 'mywebsite.com',
description: 'Pay via stripe',
amount: amount,
token: function(token) {
console.log(token);
resolve(token);
}
});
});
};
}]);
控制器:
$scope.clicked = function(amount) {
StripeService.open(amount).then(function(token){
console.log('token', token);
});
};