1

我对 Ionic 开发相当陌生,到目前为止还没有遇到太多问题。但是,尽管文档建议通过“格式”选项中的“PDF_417”参数来支持它们,但我仍然试图让 PDF417 类型的条形码进行扫描(使用 phonegap-plugin-barcodescanner)。注意:扫描适用于其他代码,例如 QR_CODE、EAN_13 - 所以代码大部分是正确的。我不认为正在处理错误函数之后的选项列表。

  $cordovaBarcodeScanner.scan().then(function(imageData) {

    $scope.si_data_display = imageData.text;
    console.log("app.js :: .controller - MainCtrl :: scan_barcode :: text : " + imageData.text);
    console.log("app.js :: .controller - MainCtrl :: scan_barcode :: format : " + imageData.format);
    console.log("app.js :: .controller - MainCtrl :: scan_barcode :: cancelled  : " + imageData.cancelled);

  }, function(error) {
    //TODO: better error handling...
    alert("Error with BarcodeScanner" + error);
  },
  { //I DONT THINK THIS IS WORKING!
    "preferFrontCamera" : true, // iOS and Android
    "showFlipCameraButton" : true, // iOS and Android
    "prompt" : "zzzzzzzzzzzz", // supported on Android only
    "formats" : "PDF_417", // default: all but PDF_417 and RSS_EXPANDED
  });

我们将不胜感激地收到任何帮助、建议和/或指点。

提前谢谢你,哈罗德克莱门茨

4

1 回答 1

1

是的,你写的代码很糟糕,你在 $cordovaBarcodeScanner.scan() 函数中有一个错误,因为它是一个承诺,因此它从.them方法返回两个 callbackFuntion

q.resolve(结果);

q.拒绝(错误);

$CordovaBarcodeScanner 是一个返回两个函数的工厂

带有输入参数的函数

扫描:功能(配置){

第二个有两个输入参数

编码:函数(类型,数据){}

两者都是承诺功能

所以提出请求的正确方法是:

document.addEventListener("deviceready", function () {
$scope.scan= function () {

  $cordovaBarcodeScanner
    .scan({ //I KNOW THIS IS GOOD!
           "preferFrontCamera" : true, // iOS and Android
           "showFlipCameraButton" : true, // iOS and Android
           "prompt" : "zzzzzzzzzzzz", // supported on Android only
           "formats" : "PDF_417"  //NO ',' in the last element
          })
    .then(function (imageData) {
      $scope.si_data_display = imageData.text;
      alert(JSON.stringify(imageData));
    }, function (error) {
      $scope.result=" :( intentalo de nuevo. Ocurrio un Error"
      alert(Error);
    });
}
  /*
    try to use, but inject in your controller
    $ionicPlatform.ready(function() {
      $cordovaBarcodeScanner.scan().then(success, error);
    });
  */

在你的 html

<button class="button" ng-click="scan()">Escanear</button>

查看 ios 库,它仅包含以下类型的格式,因此不适用于 iOS。如果你找到一些使用IONIC在ios中扫描PDF417的方法,你可以分享一下!

typedef enum BarcodeFormat {
    BarcodeFormat_None = 0,
    BarcodeFormat_QR_CODE,
    BarcodeFormat_DATA_MATRIX,
    BarcodeFormat_UPC_E,
    BarcodeFormat_UPC_A,
    BarcodeFormat_EAN_8,
    BarcodeFormat_EAN_13,
    BarcodeFormat_CODE_128,
    BarcodeFormat_CODE_39,
    BarcodeFormat_ITF
} BarcodeFormat;

希望对大家有用

于 2017-04-16T04:42:46.470 回答