使外部异步JavaScript API适应AngularJS框架
我一直在尝试修改API的JavaScript代码以接收支付令牌,但我找不到创建运行该代码的函数的方法。API的原始示例非常有效,但我无法将代码转换为可重用函数。我尝试了不同的方法,但我总是得到相同的错误:使外部异步JavaScript API适应AngularJS框架,javascript,angularjs,asynchronous,angular-promise,ionic-v1,Javascript,Angularjs,Asynchronous,Angular Promise,Ionic V1,我一直在尝试修改API的JavaScript代码以接收支付令牌,但我找不到创建运行该代码的函数的方法。API的原始示例非常有效,但我无法将代码转换为可重用函数。我尝试了不同的方法,但我总是得到相同的错误: TypeError: $scope.token is not a function 我在一个Ionic应用程序中使用这个代码。 请帮帮我,我找不到解决办法 API的原始示例: $gn.ready(功能(签出){ var callback=函数(错误、响应){ 如果(错误){ //错误 控制
TypeError: $scope.token is not a function
我在一个Ionic应用程序中使用这个代码。
请帮帮我,我找不到解决办法
API的原始示例:
$gn.ready(功能(签出){
var callback=函数(错误、响应){
如果(错误){
//错误
控制台错误(error);
}否则{
//成功
控制台日志(响应);
}
};
checkout.getPaymentToken({
品牌:“visa”,
编号:“4012001038443335”,
cvv:'123',
到期月份:“05”,
到期年份:2018年
},回调);
});代码>
$scope.getToken=函数(签出、b、n、c、m、y){
var callback=函数(错误、响应){
如果(错误){
//埃罗奥科里多餐厅
控制台错误(error);
}否则{
//反应塔
console.log(response.data.payment\u令牌);
}
};
checkout.getPaymentToken({
品牌:b,//bandeira do cartão
编号:n,//número do cartão
cvv:c,//código de segurança
到期月份:m,//mês de vencimento
到期年份:y//ano de vencimento
},回调);
};
$gn.ready(功能(签出){
$scope.getToken(checkout,b,n,c,m,y);
});代码>将$gn异步API放入服务中:
app.constant("gnAPI", $gn);
app.service("gnService", function(gnAPI,$q) {
this.getPaymentToken = function(cardData) {
var future = $q.defer();
gnAPI.ready(function(checkout) {
checkout.getPaymentToken(
cardData,
function callback(error, response) {
if (error) {
future.reject(error);
} else {
future.resolve(response);
};
}
);
});
return future.promise;
};
});
然后在控制器中使用:
var cardData = {
brand: 'visa',
number: '4012001038443335',
cvv: '123',
expiration_month: '05',
expiration_year: '2018'
};
gnService.getPaymentToken(cardData)
.then(function (response) {
console.log(response);
}).catch(function (error) {
console.log(error);
throw error;
});
通过使用AngularJS$q服务创建$q服务承诺,外部异步API将与AngularJS框架及其范围摘要周期正确集成
有关更多信息,请参阅。什么是$gn?您应该使用美元前缀,这是保留的。$gn来自API的SDK。文档的细节很差,但这基本上是一个初始化函数,允许调用“getPaymentToken”。是哪行代码导致了错误?第二行,在“$scope.token=function(b,n,c,m,y){”我尝试了它,但它在函数回调(future.reject,future.resolve)时记录了一个错误:“app.js:18未捕获的语法错误:意外标记。"不过,您的解决方案看起来很棒,我真的在努力让它工作。我对Angular和Ionic还不熟悉,这就是为什么我一直在为服务和异步API而挣扎。它工作,但仍然存在一个问题:每次启动应用程序时,$scope.getToken函数都在运行。我想在按钮单击事件后运行它…我尝试存储它结帐后使用,但它不起作用。有什么建议吗?