首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cordova Card.IO插件实现

Cordova Card.IO插件实现
EN

Stack Overflow用户
提问于 2016-09-25 07:59:37
回答 1查看 537关注 0票数 1

我在实现Cordova的Card.io插件时遇到了一些问题。github页面上有关于如何安装和实现插件的说明:https://github.com/card-io/card.io-Cordova-Plugin

我通过这样做增加了跳水

代码语言:javascript
复制
$ cordova plugin add https:///...

并添加了他们告诉您添加到github页面上的按钮。到目前为止,我非常确定我正在以我应该做的方式做每一件事。然而,现在问题来了,应用程序中的实际实现。我在我的应用程序中使用ui框架,因此,我没有index.js文件,我的代码看起来也不像标准index.js中关于deviceReady处理的代码。我只是想..。

代码语言:javascript
复制
.ready(function() {
    // Code to fire on device ready.
}):

我对回调函数比较熟悉,但我不知道他们的示例中发生了什么。整个"example : function() {...“对我来说是全新的。

有没有人可以重写这个例子,让它只有几个结构良好、更有意义的函数?

我试着这样做,我的代码现在看起来像这样:

代码语言:javascript
复制
   .ready(function() {
        CardIO.canScan(onCardIOCheck);
    });

    function onCardIOComplete() {
        var cardIOResponseFields = [
            "cardType",
            "redactedCardNumber",
            "cardNumber",
            "expiryMonth",
            "expiryYear",
            "cvv",
            "postalCode"
        ];

        var len = cardIOResponseFields.length;
        alert("card.io scan complete");
        for (var i = 0; i < len; i++) {
            var field = cardIOResponseFields[i];
            alert(field + ": " + response[field]);
        }
    }

    function onCardIOCancel() {
        alert("card.io scan cancelled");
    }

    function onCardIOCheck(canScan) {
        alert("card.io canScan? " + canScan);
        var scanBtn = document.getElementById("scanBtn");
        if (!canScan) {
          scanBtn.innerHTML = "Manual entry";
        }

        scanBtn.addEventListener("click", function(e) {
            var options = {
                "requireExpiry": true,
                "requireCVV": false,
                "requirePostalCode": false,
                "restrictPostalCodeToNumericOnly": true
            };
            CardIO.scan(options, onCardIOComplete, onCardIOCancel);
        });
      }

不过,这不起作用。我在.ready()函数内的调用两端添加了alert(),以查看它是否触发。两者都会触发,但就好像Card.canScan()函数根本不触发一样。我还在onCardIOCheck函数中添加了一个警告(),以查看是否曾经到达过它,但它没有到达。

任何帮助都将不胜感激。

(请注意:我不使用Angular.js,我只使用纯Javascript和偶尔的jQuery)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-25 20:46:41

你需要更换

代码语言:javascript
复制
.ready(function() {
    CardIO.canScan(onCardIOCheck);
});

使用

代码语言:javascript
复制
document.addEventListener('deviceready', function() {
    CardIO.canScan(onCardIOCheck);
}, false);

您使用的ready事件是DOM的ready事件,而不是cordova插件。我相信当您调用CardIO.canScan(onCardIOCheck);时,插件没有加载,这就是它不能工作的原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39682098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档