Как запустить событие после того, как я перестал набирать в angularJs - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть таблица, созданная с помощью ng-repeat, и я хочу выполнить какое-либо действие после изменения количества с одного значения на другое (а также было бы неплохо иметь исходное значение до изменения).Я попытался использовать ng-change = "myFunction (result, {{result.modelValue}})", но проблема в том, что это событие вызывается при каждом нажатии клавиши, и поэтому я набрал, скажем, 7, и на самом деле хочу набрать 70, нособытие уже произошло.Я также попробовал ng-blur, но потом ничего не произошло (моя функция даже не вызывалась).Обратите внимание, что у меня также есть ng-click в ng-repeat.

Знаете ли вы, к какому событию я должен пытаться подключиться и как лучше всего отследить исходное значение до изменения (также сложность заключается в том, что я нахожусь в цикле 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] Синтаксическая ошибка: маркер ')' не является основным выражением в столбце 30 выражения [crud.quantityChanged (result,)], начинающегося с [)].http://errors.angularjs.org/1.6.4/$parse/syntax?p0=)&p1=not%20a%20primary%20expression&p2=30&p3=crud.quantityChanged(result%2C%20)&p4=)

Что я должен изменить в приведенном выше, чтобы решить эту проблему?

Я нашел следующую ветку, которая кажется актуальной, но немного выше моей головы, и я бы не стал вводить новые директивы в этот микс, если это возможно:

Как использовать последний действительныйmodelValue, если модель становится недействительной?

...