Javascript 如何将数据从服务传递到控制器AngularJS+;条纹
我正在ionic应用程序中实现条带支付方法,需要从服务中获取Javascript 如何将数据从服务传递到控制器AngularJS+;条纹,javascript,angularjs,ionic-framework,stripe-payments,angular-services,Javascript,Angularjs,Ionic Framework,Stripe Payments,Angular Services,我正在ionic应用程序中实现条带支付方法,需要从服务中获取令牌 我面临的问题是,StripeService中的console.log(token)正在对token进行控制台操作,但我需要将其传递给我的控制器以执行一些额外的操作 我尝试了返回令牌在this.open()方法和console.log(StripeService.open(amount))中,但运气不好 我正在尝试这个- 让我知道如何将令牌从服务获取到控制器 代码- 以下是我的AngularJS服务代码- .service('Str
令牌
我面临的问题是,StripeService
中的console.log(token)
正在对token进行控制台操作,但我需要将其传递给我的控制器以执行一些额外的操作
我尝试了返回令牌
在this.open()
方法和console.log(StripeService.open(amount))
中,但运气不好
我正在尝试这个-
让我知道如何将令牌从服务获取到控制器
代码-
以下是我的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);
}
});
};
});
以下是我在controller中的方法,并调用该服务-
$scope.clicked = function(amount) {
StripeService.open(amount);
};
您可以使用返回令牌
服务:
.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;
};
}]);
.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);
});
};
$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) {
var deferred = $q.defer();
handler.open({
name: 'mywebsite.com',
description: 'Pay via stripe',
amount: amount,
token: function(token) {
deferred.resolve(token);
}
});
return deferred.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);
});
};
$scope.clicked = function(amount) {
StripeService.open(amount).then(function(token){
console.log('token', token);
});
};
我怎样才能让它在手机上工作?在移动条带上签出打开一个新选项卡,只有true onclick事件打开一个新选项卡,因此handler.open from ng click不会打开表单