Коллеги, добрый день. Просьба подсказать решение.
Была дана задача, реализовать инпут который позволяет вводить только целочисленные значения.
Мой код:
<script>
angular.module("App", [])
.controller("defaultCtrl", function ($scope) {})
.directive("checkNumber", function () {
return function (scope, element, attributes) {
const number = element[0].value;
const numberAfter = attributes.checkNumber
scope.$watch('inputValue', function (newValue, oldValue) {
const limitNumber = function (newValue) {
if (newValue / Math.floor(newValue) != 1 && newValue != undefined) {
let result = Number.parseInt(newValue)
scope.inputValue = result
}
}
limitNumber(newValue)
})
}
})
</script>
</head>
<body ng-controller='defaultCtrl'>
<input type='number' value="{{inputValue}}" ng-model="inputValue" check-Number='0'>
</body>
Комментарий такой:
внутри слушателя ты присваиваешь модели значений, однако в этот момент расчёт модели не завершен (digest - цикл), в виду чего происходит зацикливание (в таком случае лучше делать присваивание через timeout, при условии что новое значение слушателя не равно старому значению)
Т.к. я только в процессе изучения фреймворка, не понимаю все тонкости. Можете простым языком пояснить и подсказать пример решения. Заранее благодарен.