Я хочу проверить правильность входного значения (например, если кто-то тратит не менее 25 центов на конфету из списка конфет), а если нет, пометьте этот ввод как $ недействительно, поэтому форма не представляется.AngularJS: SetValidity в ng-repeat
<form novalidate name="candyForm">
<div ng-repeat="candy in candies">
<input name="candyCost" type="text" ng-model="candy.cost" required>
<div class="error" ng-show='checkEnoughMoney()'>You only have 1 dollar to spend</div>
<div class="error" id="candyError{{$index}}">You must spend at least 25c per candy</div>
</div>
</form>
checkEnoughMoney() является:
$scope.checkEnoughMoney = function() {
var total = 0;
for(var i = 0; i < $scope.candies.length; i++) {
var amount = parseFloat($scope.sweets[i].cost) || 0;
total = total + amount;
if((parseFloat(amount) >= 25) && (parseFloat(amount) <= 100)) {
$("#candyError" + i).hide();
}
else {
$("#candyError" + i).show();
}
}
if(total > 100) {
$scope.candyForm.candyCost.$setValidity('candyForm.candyCost',false);
return true;
}
else {
$scope.candyForm.candyCost.$setValidity('candyForm.candyCost',true);
return false;
}
};
Установка $ scope.candyForm.candyCost истинных или ложных работ здесь, как это влияет на все случаи, если конфеты, это здорово, так как он должен к. Но как я могу сделать один экземпляр недействительным, если человек ввел менее 25 центов или более 100 центов?
Как вы можете видеть, я обманул, чтобы показать 25> = стоимость> = 100 сообщений, когда они должны, но форма все равно отправляется, так как вход не установлен на недействительный. Если я попробую $ scope.candies [index] .setValidity («cost», false), он выдает ошибку, поскольку родительская область не может получить доступ к области внутри ng-repeat. Есть ли способ обойти это?
Cheers. Это то, что мне нужно. Он также решил следующую проблему, которую я должен был иметь. Хотел бы я пометить это дважды! :) – Jezcentral
Ссылка сейчас мертва. Можно ли найти эту информацию в другом месте? – Scheintod