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()" />
Другие вопросы по тегам