我在为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)
答案 0 :(得分:1)
您需要替换
.ready(function() {
CardIO.canScan(onCardIOCheck);
});
用
document.addEventListener('deviceready', function() {
CardIO.canScan(onCardIOCheck);
}, false);
您正在使用的就绪事件是DOM的ready事件,而不是cordova插件。我相信当你打电话给CardIO.canScan(onCardIOCheck);
插件没有加载时,为什么它不起作用。