Функция поля формы reset для деформированного состояния (reset грязное состояние) находится в дорожной карте для AngularJS 1.1.x. К сожалению, такая функция отсутствует в текущем стабильном выпуске.
Каков наилучший способ для reset всех полей формы для их первоначального первоначального состояния для AngularJS 1.0.x.?
Я хотел бы знать, можно ли это устранить с помощью директивы или другого простого обходного пути. Я предпочитаю решение без необходимости касаться оригинальных источников AngularJS. Чтобы прояснить и продемонстрировать проблему, ссылка на JSFiddle. http://jsfiddle.net/juurlink/FWGxG/7/
Желаемая функция находится в Дорожной карте - http://blog.angularjs.org/2012/07/angularjs-10-12-roadmap.html
Запрос функции - https://github.com/angular/angular.js/issues/856
Предлагаемое решение Запрос Pull - https://github.com/angular/angular.js/pull/1127
Обновлено с возможным обходным способом
Достаточно хороший обход?
Я только что понял, что могу перекомпилировать часть HTML и вернуть ее обратно в DOM. Он работает, и это хорошо для временного решения, но также как @blesh упоминается в комментариях:
Контроллеры должны использоваться только для бизнес-логики, а не для DOM!
<div id="myform">
<form class="form-horizontal" name="form">
</form>
</div>
И в моем контроллере на resetForm()
:
- Сохранить оригинальный нетронутый HTML
- Перекомпилируйте сохраненный исходный HTML
- Удалить текущую форму из DOM
- Вставьте новый скомпилированный шаблон в DOM
JavaScript:
var pristineFormTemplate = $('#myform').html();
$scope.resetForm = function () {
$('#myform').empty().append($compile(pristineFormTemplate)($scope));
}