Cordova Card.IO插件实现

时间:2016-09-24 23:59:37

标签: cordova plugins card.io

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

我通过

添加了插入
$ cordova plugin add https:///...

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

.ready(function() {
    // Code to fire on device ready.
}):

我对回调有些熟悉,但我不知道他们的例子中发生了什么。整个“例子:function(){...”对我来说是全新的。

有人可以重写那个例子,以便它是一些结构合理并且更有意义的功能吗?

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

   .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函数中添加了一个alert(),看它是否已经到达,但事实并非如此。

非常感谢任何帮助。

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

1 个答案:

答案 0 :(得分:1)

您需要替换

.ready(function() {
    CardIO.canScan(onCardIOCheck);
});

document.addEventListener('deviceready', function() {
    CardIO.canScan(onCardIOCheck);
}, false);

您正在使用的就绪事件是DOM的ready事件,而不是cordova插件。我相信当你打电话给CardIO.canScan(onCardIOCheck);插件没有加载时,为什么它不起作用。