Я получаю сообщение об ошибке Не могу прочитать свойство $ setPristine 'undefined при попытке сбросить форму.
Мой контроллер:
formApp.controller('FormController', ['$scope',
function ($scope) {
$scope.options = ["Opt1", "Opt2", "Opt3", "Other"];
$scope.formData = {
selectedOption: null,
firstName: "",
lastName: "",
email: "",
phone: "",
fax: "",
comments: ""
};
var origData = angular.copy($scope.formData);
$scope.submit = function() {
// submit code goes here
};
$scope.reset = function() {
$scope.formData = angular.copy(origData);
// $scope.financeForm.$setUntouched();
$scope.financeForm.$setPristine();
};
$scope.reset();
}
]);
Мой HTML (я раздели большинство полей, чтобы сохранить это минимальное):
<form id="financeForm" name="financeForm" ng-submit="financeForm.$valid && submit()" novalidate>
<md-content layout-padding class="autoScroll">
<md-input-container flex md-is-error="financeForm.selectedOption.$invalid && (financeForm.$submitted || financeForm.selectedOption.$dirty)">
<md-select required placeholder="Nature of your Enquiry" ng-model="formData.selectedOption" name="selectedOption" id="selectedOption">
<md-option ng-repeat="opt in options" value="{{opt}}">{{opt}}</md-option>
</md-select>
<div ng-messages="financeForm.selectedOption.$error" ng-if="financeForm.$submitted || financeForm.selectedOption.$touched">
<div ng-message="required">Please your enquiry option.</div>
</div>
</md-input-container>
<md-input-container>
<label>Comments</label>
<textarea ng-model="formData.comments" columns="1" md-maxlength="500"></textarea>
</md-input-container>
</md-content>
<md-button class="md-raised" ng-click="reset();">RESET</md-button>
<md-button class="md-raised md-primary">SUBMIT</md-button>
</form>
Я не понимаю, что я делаю неправильно. Кто-то может помочь?
$ setPristine не должны быть добавлены в качестве услуги для вашей функции в верхней части. Так же, как область –
, 'financeForm' не привязана к области вашего контроллера при вызове' $ scope.reset() ', она привязана только после инициализации контроллера AFAIK. Нужно ли вызывать '$ scope.reset()' когда ваш контроллер инициализируется? Когда вы нажимаете кнопку сброса, вы не должны получать эту ошибку, или вы? – user2718281