вот мой первый вопрос на этом замечательном форуме.
мне нужно предупредить пользователя, почему введенный им номер недействителен, но я хочу каждый раз печатать только одно сообщение. Я реализовал решение, но оно не очень легко эволюционирует.
Вот мой HTML-код:
<input type="number" name="amountReceived" class="styled" data-ng-model="cashAmountReceived" required>
<div class="error" data-ng-show="cashPaymentForm.amountReceived.$error.required && cashPaymentForm.submitted">Valid amount required</div>
<div class="error" data-ng-show="cashPaymentForm.amountReceived.$error.notEnought && cashPaymentForm.submitted">It's not enought</div>
<div class="error" data-ng-show="cashPaymentForm.amountReceived.$error.negatif && cashPaymentForm.submitted">Positive value only</div>
и вот мой код контроллера:
$scope.$watch('cashAmountReceived', function() {
if(angular.isNumber($scope.cashAmountReceived)){
var tmp = $scope.cashAmountReceived.toString();
tmp = tmp.replace(/(\d{0,9})+\.(\d{0,2}).*/,'$1.$2');
$scope.cashAmountReceived = parseFloat(tmp);
if( $scope.cashAmountReceived < 0){
$scope.cashPaymentForm.amountReceived.$setValidity('negatif', false);
$scope.cashPaymentForm.amountReceived.$setValidity('notEnought', true);
}
else{
$scope.cashPaymentForm.amountReceived.$setValidity('negatif', true);
if($scope.cashAmountReceived < $scope.totalProductPrice){
$scope.cashPaymentForm.amountReceived.$setValidity('notEnought', false);
}
else{
$scope.cashPaymentForm.amountReceived.$setValidity('notEnought', true);
}
}
}
else{
$scope.cashPaymentForm.amountReceived.$setValidity('notEnought', true);
$scope.cashPaymentForm.amountReceived.$setValidity('negatif', true);
}
});
Я должен вручную управлять ошибками достоверности, чтобы убедиться, что только одна будет напечатана благодаря директивам ng-show
на моей HTML-странице. Я хотел бы реализовать легко эволюционирующее решение на случай, если мне нужно добавить дополнительные критерии проверки.
Я думаю о том, чтобы сделать свою собственную директиву с системой управления приоритетами для моих пользовательских ошибок и совместимых с возможностями ошибок по умолчанию, но я не знаю, как поступить.
Или, может быть, я могу оставить процесс в контроллере и создать только одну пользовательскую ошибку с именем custom
и определить переменную области видимости с именем errorReason
, которая будет содержать соответствующее предупреждающее сообщение.
У меня будет что-то подобное в моем HTML-коде:
<input type="number" name="amountReceived" class="styled" data-ng-model="cashAmountReceived" required>
<div class="error" data-ng-show="cashPaymentForm.amountReceived.$error.custom && cashPaymentForm.submitted">{{errorReason}}</div>
Что вы, ребята, думаете об этом?
Прошу прощения, если мой английский неверен.