提交相同的表格两次并形成。$有效

时间:2016-10-10 22:42:24

标签: angularjs

我有一个用于扫描条形码的表单。当输入一个时,ng-click函数会触发并读取表单和条形码。像这样:

<form name="vm.form">
    <input ng-model="vm.scannedBarcode"
       required
       oninvalid="this.setCustomValidity('Please enter a barcode number')"
       onchange="this.setCustomValidity('')"
       type="text">
   <input type="submit" 
       ng-click="vm.addBarcode(vm.form, vm.scannedBarcode)" 
       value="Add">      
</form>

然后,控制器:

vm.addBarcode = function(form, barcode) {
    if(form.$valid){
        console.log("okay");
        ...
        // add the barcode to an array of barcodes
    }
}

请注意,表单提交后位置不会更改。新条形码只是推送到现有条形码阵列,然后显示在表格下方的表格中。我认为这是关键。

上述方法有效,但仅适用于扫描的第一个条形码,例如1111。然后我扫描第二个条形码,说2222。现在form设置为pristineinvalid,即使barcode设置为2222,也应如此。

简而言之,我如何两次提交相同的表格?

谢谢!

1 个答案:

答案 0 :(得分:0)

您的代码看起来很好。但是,在第一个进程完全完成之前或在摘要周期完成之前,有可能第二次调用addBarcode。 Myabe你需要尝试$ timeout这样的。         vm.addBarcode = $ timeout(函数(表单,条形码){     如果(形式$有效){         的console.log(&#34;没关系&#34);         ...         //将条形码添加到条形码数组中     } });