Javascript 如何将数据从服务传递到控制器AngularJS+;条纹

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

我正在ionic应用程序中实现条带支付方法,需要从服务中获取
令牌

我面临的问题是,
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不会打开表单