我对Ionic开发相当陌生,到目前为止还没有遇到太多问题。然而,我坚持试图让PDF417型条形码扫描(使用phonegap-plugin- barcodesscanner),尽管文档表明它们是通过在"格式"选项中传递"PDF_417"参数来支持的。注意:扫描工作在其他代码,如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
});
任何帮助、建议和指示都将不胜感激。
提前谢谢你,Harold Clements
是的,你的代码写得很糟糕,你在$ cordoabarcodesscanner .scan()函数中有一个错误,因为它是一个承诺,因此它从返回两个callbackfunction。他们
方法q.resolve(结果);
q.reject (err);
$ cordoabarcodescanner在一个工厂中返回两个函数
带有输入参数的函数
scan: function (config) {
和第二个带有两个输入参数的
编码:函数(类型、数据){}
都是promise函数
所以正确的请求方式是:
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。如果你找到一些方法来扫描PDF417在ios使用IONIC,你可以分享!
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;
希望对大家有帮助