使用条形码扫描仪时双向绑定丢失字符

时间:2017-05-25 03:24:45

标签: binding aurelia aurelia-framework

在我们的Aurelia应用程序中,我们在各种对话框中使用条形码扫描。所以我们创建了一个条形码组件。在此组件上使用条形码扫描仪时,我们发现扫描过程中会丢失一些字符。在条形码组件中,我们使用输入字段来捕获扫描输入或用户键入字段 - 按下回车键,组件发送包含条形码的事件 - 对话框拦截并执行某些操作。

我试图让这个组件在aurelia骨架导航应用程序(在github“skeleton-navigation \ skeleton-typescript”上)失败,就像在我们的应用程序中一样,但是它一致地工作 - 这不是字符正在迷失。

然后我回到了我们的应用程序。如果我将条形码组件简化为如下所示的简单输入字段,它也会失败。如果我取出value.bind或value.two-way,输入字段不会丢失字符。

   <input type="text" value.bind="barcodeValue1"/>
   <input type="text" value.two-way="barcodeValue2"/>

有很多不同之处在于package.json文件,例如我们的应用程序正在使用:

“aurelia-framework”:“npm:aurelia-framework@^1.0.0-rc.1.0.2”。

aurelia-skeleton正在使用:

“aurelia-framework”:“npm:aurelia-framework@^1.0.0”

我们可以看到一种解决方案,即在字符之间引入扫描器的延迟,但我们希望绑定工作,并且还认为它可能是Aurelia中的错误。我们目前正在重新编写组件,不使用绑定功能。我们的应用程序中的问题发生在Internet Explorer中,并且可以在Google Chrome中正常运行。

1 个答案:

答案 0 :(得分:0)

这可能是IE中的一个错误。我相信可以通过将updateTrigger更改为&#39;更改&#39;

来解决此问题
<input type="text" value.bind="barcodeValue1 & updateTrigger:'change'"/>

您还可以尝试debounce

<input type="text" value.bind="barcodeValue1 & debounce">

http://aurelia.io/hub.html#/doc/article/aurelia/binding/latest/binding-binding-behaviors/1

确保您的扫描仪正在按下&#34;输入&#34;或&#34; tab&#34;输入代码后。