2016-09-24 64 views
1

我在爲Cordova實現Card.io插件時遇到了一些麻煩。還有如何安裝和實施插件GitHub的頁面上的說明:https://github.com/card-io/card.io-Cordova-PluginCordova Card.IO插件實現

我做

$ 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

您需要更換

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

隨着

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

的你正在使用的準備好的事件是DOM的準備事件,而不是cordova插件。我相信當你調用CardIO.canScan(onCardIOCheck);這個插件沒有被加載,那爲什麼它不工作。

+0

謝謝,我試過你的解決方案。它有幫助,但不完全工作。它有助於Card.io現在正確啓動。但是,它會關閉canScan功能,但回調不會觸發。更令人感到奇怪的是,當我將應用程序置於後臺並返回時,回調觸發狀態爲「true」,這是積極的。但爲什麼只有當應用程序在後臺時纔會觸發。然後,當我點擊按鈕時,什麼都沒有發生,但是當我將應用程序放在後臺時,它會調出Card.io界面。接口再次只能在後臺運行。思考? – user1840352