Які відмінності між ng-pristineі ng-dirty? Здається, у вас може бути і те, і інше true:
$scope.myForm.$pristine = true; // after editing the form
Які відмінності між ng-pristineі ng-dirty? Здається, у вас може бути і те, і інше true:
$scope.myForm.$pristine = true; // after editing the form
Відповіді:
ng-dirtyКлас говорить вам , що форма була змінена користувачем, в той час як ng-pristineклас говорить вам , що форма не була змінена користувачем. Так ng-dirtyі ng-pristineє дві сторони однієї і тієї ж історії.
Класи встановлюються в будь-якому полі, тоді як форма має два властивості, $dirtyі $pristine.
Ви можете скористатися $scope.form.$setPristine()функцією, щоб повернути форму до первинного стану (врахуйте, що це функція AngularJS 1.1.x).
Якщо ви бажаєте $scope.form.$setPristine()поведінки -ish навіть у 1.0.x гілці AngularJS, вам потрібно прокрутити власне рішення (деякі досить хороші з них можна знайти тут ). В основному це означає повторення над усіма полями форми та встановлення їх $dirtyпрапора false.
Сподіваюся, це допомагає.
первозданний повідомляє нам, що поле все ще незаймане, а брудне повідомляє нам, якщо користувач уже щось набрав у відповідному полі:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script>
<form ng-app="" name="myForm">
<input name="email" ng-model="data.email">
<div class="info" ng-show="myForm.email.$pristine">
Email is virgine.
</div>
<div class="error" ng-show="myForm.email.$dirty">
E-mail is dirty
</div>
</form>
Поле, яке зареєструвало одну подію клавіатури, більше не є незайманою (не більш незайманою) і тому забруднене навіки.
Обидві директиви, очевидно, служать одній і тій же цілі, і хоча здається, що рішення кутового колективу включити обидва заважають принципу DRY та додає корисне навантаження сторінки, все-таки досить практично, щоб вони були обома навколо. Легше стилізувати вхідні елементи, оскільки у вас є CS-файли та .ng-брудні для стилізації у файлах css. Я думаю, що це було основною причиною додавання обох директив.
.ng-pristineта .ng-dirtyдозволити різні стилі css - це здається найправильнішою причиною повторення
Як вже було сказано в попередніх відповідях, ng-pristineце означає, що поле не було змінено, тоді ng-dirtyяк для того, щоб сказати, що воно було змінено. Навіщо потрібно обоє?
Скажімо, у нас є форма з телефоном та адресою електронної пошти серед полів. Потрібен або телефон, або електронна пошта, і ви також повинні повідомити користувача, коли він отримає недійсні дані у кожному полі. Це можна досягти, використовуючи ng-dirtyта ng-pristineспільно:
<form name="myForm">
<input name="email" ng-model="data.email" ng-required="!data.phone">
<div class="error"
ng-show="myForm.email.$invalid &&
myForm.email.$pristine &&
myForm.phone.$pristine">Phone or e-mail required</div>
<div class="error"
ng-show="myForm.email.$invalid && myForm.email.$dirty">
E-mail is invalid
</div>
<input name="phone" ng-model="data.phone" ng-required="!data.email">
<div class="error"
ng-show="myForm.phone.$invalid &&
myForm.email.$pristine &&
myForm.phone.$pristine">Phone or e-mail required</div>
<div class="error"
ng-show="myForm.phone.$invalid && myForm.phone.$dirty">
Phone is invalid
</div>
</form>
ng-незайманий ($ pristine)
Boolean True, якщо форма / введення ще не використовувались ( не змінено користувачем )
нг-брудний ($ брудний)
Boolean True, якщо форма / вхід використана ( модифікована користувачем )
$ setDirty (); Встановлює форму в брудний стан. Цей метод можна викликати, щоб додати клас 'ng-dirty' та встановити форму в брудний стан (клас ng-бруд). Цей метод поширить поточний стан на батьківські форми.
$ setPristine (); Встановлює форму в первозданний стан. Цей метод встановлює $ первозданний стан форми істинним, $ брудний стан - хибним, видаляє клас ng-брудний і додає клас ng-незайманий. Крім того, він встановлює значення $, що передається $, на значення false. Цей метод також поширюється на всі елементи управління, що містяться в цій формі.
Повернення форми в незайманий стан часто корисне, коли ми хочемо «повторно використати» форму після збереження або скидання.