Я пытаюсь использовать сканер штрих-кода в своем приложении Angular2 с Cordova и относительным плагином.
Я могу просто протестировать на Android сейчас, и я получаю странное поведение. Я не могу найти проблему, будь то плагин или мой код.
Сканирование работает правильно, но после переключения с активности камеры на веб-просмотр приложения кажется, что события и привязка данных плохо обрабатываются.
Когда сканирование возвращает результат, я устанавливаю свойство в своем представлении, чтобы сообщить приложению, что состояние сканирования является успешным, и поэтому мое угловое представление показывает некоторые кнопки, например, для открытия ссылки.
Одни работают, другие нет. Также, если я повторно сканирую код и отменяю его, выходя из активности камеры, он показывает мне предыдущий не показанный результат.. Или иногда просто не работает :(
ЯВАСКРИПТ:
export class ScanQRView extends View {
private scanState: string = 'ready';
[....]
public scan(): void {
if (this.utility.inApp('barcodeScanner')) {
cordova.plugins.barcodeScanner.scan(
(result) => {
setTimeout(() => {
if (!result.cancelled) {
this.onResult(result.text);
console.log(this.scanState);
} else {
this.onResult(false);
}
}, 500);
},
(error) => this.onResult(false), {
preferFrontCamera : true,
showFlipCameraButton : true,
showTorchButton : true,
torchOn: true,
//prompt : "Place a barcode inside the scan area",
resultDisplayDuration: 500,
formats : "QR_CODE",
disableAnimations : true,
disableSuccessBeep: false
}
);
}
}
public onResult(result: string|boolean): void {
if (result === false) {
this.scanState = 'error';
} else {
this.link = result.toString();
this.scanState = 'success';
}
}
}
ШАБЛОН:
<div class="row scan" *ngIf="scanState == 'ready'">
<div class="col-xs-3"></div>
<div class="col-xs-6">
<button type="button" class="btn btn-info btn-lg btn-block fade-in-out-button" (click)="scan()">
<i class="fa fa-camera" aria-hidden="true"></i>
</button>
</div>
<div class="col-xs-3"></div>
</div>
<div class="row scan" *ngIf="scanState == 'success'">
<div class="col-xs-12">
<div class="btn-group">
<div class="btn-group">
<button type="button" class="btn btn-info btn-lg" (click)="cancel()">
<i class="fa fa-refresh" aria-hidden="true"></i>
</button>
</div>
<div class="btn-group">
<button type="button" class="btn btn-info btn-lg fade-in-out-button" (click)="openLink()">
<i class="fa fa-link" aria-hidden="true"></i> Apri
</button>
</div>
</div>
</div>
</div>
Пробовал с таймером и без, ничего не меняется. У кого-нибудь были подобные проблемы?