HTML:
<form name="ContactForm" novalidate >
<div class="list">
<label class="item item-input">
<input type="text" placeholder="First Name" ng-model="contact.firstName" name="uFirstName" required="" autocomplete="off"/>
</label>
<br>
<div ng-show="ContactForm.$submitted || ContactForm.uFirstName.$touched" ng-hide="hidespan">
<span class="error" ng-show="ContactForm.uFirstName.$error.required">Tell us your First Name.</span>
<span class="error" ng-show="ContactForm.uFirstName.$error.text">This is not a valid First Name.</span>
</div>
</div>
<button class="button button-block button-assertive" ng-click="ContactForm.$valid && contactReq(contact)">
Submit
</button>
</form>
JS
var defaultForm = {
firstName : "",
lastName : "",
email : "",
message : ""
}
$scope.contact = angular.copy(defaultForm);
$scope.contactReq = function(contact){
$scope.ContactForm.$setPristine();
$scope.contact = angular.copy(defaultForm);
console.log('empty');
}
我正在使用AngularJS v1.4.3进行phonegap开发。我想在单击提交按钮后重置表单。但是,当我正在设置Pristine时,我收到以下错误:&#34;错误:错误:undefined不是对象(评估&#39; $ scope.ContactForm。$ setPristine&#39;)&#34 我试过很多相关的链接,但没有什么对我有用。
非常感谢任何帮助。
答案 0 :(得分:0)
ContactForm应该在范围内。 只是猜测:在调用setPristine()
之前,将默认表单的值复制到模型中答案 1 :(得分:0)
我使用Safari 9.01时遇到了一个奇怪的问题。从我的登录页面切换到注册页面后,我的表单输入无法编辑。
所以我尝试使用$ setPristine()方法并遇到了同样的问题。我发现在重置函数中设置超时允许我访问表单。
你可以尝试:
$scope.contactReq = function(contact){
$timeout(function(){
$scope.ContactForm.$setPristine();
$scope.contact = angular.copy(defaultForm);
console.log('empty');
},10);
}
如果不起作用,请尝试使用this.ContactForm.$setPristine();
代替$scope.ContactForm.$setPristine();
我的问题最终成为我使用ui-router在我的观点之间切换的方式的问题。
祝你好运!