我停止键入angularJs后如何触发事件

时间:2018-12-20 17:01:44

标签: javascript html angularjs angularjs-ng-repeat

我有一个用ng-repeat创建的表,我想在将数量从一个值更改为另一个值后执行一些操作(在更改之前具有原始值也很不错)。我尝试使用ng-change =“ myFunction(result,{{result.modelValue}}))”,但问题是此事件是由每次击键触发的,所以我输入了7,实际上想输入70,但是事件已经发生。我也尝试了ng-blur,但是后来什么也没有发生(我的函数甚至没有被调用)。注意,我也可以在ng-repeat中单击ng。

您知道我应该尝试挂接到哪个事件,以及在更改之前跟踪原始值的最佳方法是什么(而且,复杂的是,我处于ng-repeat循环中)。

这是我当前的html(也可能是我原始代码中的错字):

<td ng-if="result.isMatrix===false">

                                    <div class="input-field-line-items">
                                        <input type="number" name="quantity"
                                               ng-model="result.quantity"
                                               ng-disabled="crud.model.status===3"
                                               class="form-control form-control-sm text-right"
                                               ng-mouseleave="crud.quantityChanged(result)"
                                               ng-class="{'input-has-error' : (result.quantity===null || lineItemForm.quantity.$error.max || lineItemForm.quantity.$error.min) && lineItemForm.quantity.$dirty}"
                                               min="0"
                                               max="2147483647" />

                                      </div>
                                </td>

根据给出的建议,我几乎可以使所有工作正常进行,但我发现我的代码无法正常工作的情况。当我输入错误值(例如-10)时,就会发生这种情况。在这种情况下,我在控制台中看到错误。这是我当前的html:

<div class="input-field-line-items">
                                        <input type="number" name="quantity"
                                               ng-model-options="{ updateOn: 'blur' }"
                                               ng-model="result.quantity"
                                               ng-disabled="crud.model.status===3"
                                               class="form-control form-control-sm text-right"
                                               ng-change="crud.quantityChanged(result, {{result.quantity}})"
                                               ng-class="{'input-has-error' : (result.quantity===null || matrixLineItemForm.quantity.$error.max || matrixLineItemForm.quantity.$error.min) && matrixLineItemForm.quantity.$dirty}"
                                               min="0"
                                               max="2147483647" />
                                    </div>

这是我输入负值后看到的错误:

angular.js?v = hfDjvhqzZ7xKaOtdmnQ3FhY12ud2J6HVALMF-ee3YJo1:14525错误:[$ parse:syntax]语法错误:令牌')'不是表达式[crud.quantityChanged(result,)]的第30列的主表达式[)]。 http://errors.angularjs.org/1.6.4/ $ parse / syntax?p0 =)&p1 = not%20a%20primary%20expression&p2 = 30&p3 = crud.quantityChanged(result%2C%20)&p4 =)

我应该在上面进行哪些更改以解决此问题?

我发现以下线程似乎很相关,但有点超出我的脑海,如果可能,我宁愿不引入新指令:

How to use the last valid modelValue if a model becomes invalid?

0 个答案:

没有答案