У меня есть таблица, созданная с помощью 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, если модель становится недействительной?