我知道还有其他类似的问题,但是我已经全部阅读过,而且没有一个能为我工作。
当我尝试将我的表单设置为原始时,我不断收到此错误:
TypeError: Cannot read property '$setPristine' of undefined
控制器和我的角度版本(1.4.2)一切正常,因为我还在调用$setPristine();
方法的同一函数中发生了其他事情并且正在运行。
这是我正在使用的代码:
HTML
<form name="cadTel" novalidate>
<div class="form_group">
<label class="col-md-4 f--label"><i class="fa fa-asterisk"></i>Nome</label>
<div class="col-md-8 f--input">
<input type="text" name="ds_contato" ng-model="tel.ds_contato" ng-required="true" />
</div>
</div>
<div class="form_group">
<label class="col-md-4 f--label"><i class="fa fa-asterisk"></i>Telefone</label>
<div class="col-md-8 f--input">
<input type="text" name="num_tel" mask="(99) 9?9999-9999" ng-model="tel.num_tel" ng-required="true" />
</div>
</div>
<input type="button" class="bt-m bt-suc" name="cadastrar" value="Salvar" ng-click="add_telefone(tel)">
<div class="bt-m bt-war" ng-click="reset()">Limpar</div>
</form>
app.js
$scope.tel = {};
$scope.add_telefone = function(tel) {
$scope.tel = angular.copy(tel);
$http({
method: 'POST',
url:'dist/php/db.php?action=add_telefone',
data:$scope.tel,
})
.success(function (data, status, headers, config) {
$scope.reset();
})
.error(function (data, status, headers, config) {
});
};
$scope.reset = function() {
$scope.tel = {};
$scope.cadTel.$setPristine();
};
清除值的选项正在运行,但设置原始无 有什么想法吗?
答案 0 :(得分:19)
我遇到了同样的问题,下面的修正纠正了它。 Angular不知道表单id。请更改表格名称,如下所示
form name="form.cadTel"
同样在控制器启动期间设置表单
$scope.form = {};
检查此plnkr link。
答案 1 :(得分:0)
我正在使用bootstrap模式来显示表单,当我单击“取消”或单击“模态”外部时,我想重置表单。我花了几个小时来解决AngularJS form Cannot read property '$setPristine' of undefined
错误并通过在重置表单之前添加一个简单的条件来解决它:
$('#myform-modal').on('hidden.bs.modal', function () {
resetModal();
});
resetModal = function() {
if ( $scope.MyForm ) {
$scope.MyForm.$setPristine();
$scope.MyForm.$setUntouched();
$scope.MyForm.$submitted = false;
delete $scope.data;
}
}