У меня есть форма в прототипе Angular JS 1.4.1. У меня есть класс на нем, когда он грязный. Я пытаюсь смоделировать, как кто-то сохраняет форму, и поэтому она не грязная, она сохранена, поэтому изменения все еще присутствуют, но уже не грязные.
Фрагмент формы:
<div class="override">
<tabset>
<tab heading="My Tab">
<form name="overridesForm">
<p><input ng-model="rd.isOverriden" type="checkbox"> Foobar</p>
<div class="buttons save-cancel">
<button class="btn btn-default btn-xs" ng-click="overridesForm.reset();overridesForm.$setPristine()">Cancel</button>
<button class="btn btn-primary btn-xs" ng-click="overridesForm.$setPristine()">Save with Inline</button>
<button class="btn btn-primary btn-xs" ng-click="saveData()">Save with Inline</button>
</div>
</form>
</tab>
<tab heading="Some other Tab">
blah
</tab>
</tabset>
</div>
Настройка формы на нетронутую работает для меня только встроенной, а не в функции контроллера. Итак, это работает:
<button ng-click="overridesForm.$setPristine()">Save</button>
Но не это:
<button ng-click="saveData()">Save</button>
//controller:
$scope.saveData = function () {
$scope.overridesForm.$setPristine();
toastr.success('Success', 'Data was saved.');
};
Я получаю сообщение об ошибке времени выполнения, объект не переопределяет форму.
По причинам, которые мне еще предстоит выяснить, это работает в этом codepen, но не в моем проекте.
ОБНОВИТЬ:
После поиска о доступе к форме в транслируемом контенте я наткнулся на это:
<button ng-click="saveData(overridesForm)">Save with Inline</button>
и назначьте это в контроллере:
$scope.saveData = function(form) {
$scope.overridesForm = form;
$scope.overridesForm.$setPristine();
};
Не уверен, что это лучшая практика, но она работает. Обновил кодеп.