AngularJS удаление элементов при изменении значений
В моем контроллере у меня есть переменная:
$scope.myVar = { "id": 13459045, "firstName": "Joe", "lastName": "McCarthy", "createdBy": 0, "status": "active", "dollarValue": 0 }
На моей странице у меня есть поля ввода, сопоставленные с переменной:
<input ng-model="myVar.id" class="checknumberrange" />
Класс 'checknumberrange' - это директива, которая анализирует входное значение, чтобы установить числовое значение в поле ввода и модели. При работе с этой директивой некоторые элементы в переменной $scope.myVar будут удалены из переменной.
$scope.myVar = { "firstName": "Joe", "lastName": "McCarthy", "createdBy": 0, "status": "active", "dollarValue": 0 }
В случае с директивой я обнаружил, что значения удалялись, когда возвращаемое значение не предоставлялось, но вы могли бы подумать, что оно установит значение этого ключа равным нулю, а не удалит спаривание из переменной вообще. Это происходило в других частях моего проекта, и хотя значение будет возвращаться (только для потенциального удаления), когда вы пишете в поле ввода, я не понимаю, почему это происходит. Используя угловой 1.2.0 rc3, следующий html:
<input ng-model="myVar.dollarValue" ng-blur="myVar.dollarValue=myVar.dollarValue.toFixed(2)" />
Не позволил бы мне изменить значение. Изменение значения немедленно приведет к удалению сопряжения из переменной, и если вы поместите фокус на поле ввода, а затем в другое место, то в первый раз поле изменится с "0" на "0,00", а второй раз приведет к спаривание удаляется.
Я действительно хочу понять, почему пары удаляются, чтобы я мог предотвратить это в моей работе.
1 ответ
Угловые разборы, что вы положили для ng-blur
и он не может обрабатывать весь JavaScript. Попробуйте использовать функцию, созданную в вашем контроллере (plnkr):
$scope.onBlur = function()
{
$scope.myVar.dollarValue = Number($scope.myVar.dollarValue).toFixed(2)
}
HTML:
<input ng-model="myVar.dollarValue" ng-blur="onBlur()" />