将表单设置为$pure,但保持当前值
Set form as $pristine, but keep current values
我的用例是,我需要根据用户是否更改了表单的值来启用/禁用保存按钮。
当用户单击保存按钮(进行更改后)时,将进行AJAX保存,完成后,表单需要再次被视为"原始",但保持当前值。
我认为设置form.$pristine = true
会起作用,这是单击按钮后的第一次,但编辑其中的值不会将$pristine
设置为false。
plunker示例:http://plnkr.co/edit/VX2R1bdGJFdzH3LEsNnB?p=preview
<form name="submitForm">
<input ng-model="data.first" type="text" />
<input ng-model="data.second" type="text" />
</form>
<button ng-click="saveForm()">Submit</button>
<div>Form pristine: {{submitForm.$pristine}}</div>
//In controller
$scope.saveForm = function(){
$scope.submitForm.$pristine = true;
}
- 有其他方法吗
- 如果没有,我需要做什么才能让它发挥作用
FormController$setPristine()
将窗体设置为其原始状态。
可以调用此方法来删除"ng dirty"类,并将表单设置为其原始状态(ng原始类)。该方法也将传播到该表单中包含的所有控件
当我们想在保存或重置表单后"重用"表单时,将表单设置回原始状态通常很有用。
我建议在表单标记上使用ng-submit,而不是使用ng-click。ng-submit确保在调用ng-subit的事件处理程序之前提交所有视图模型更改。这将特别适用于您将ng选项与ng模型一起使用的情况,其中您可能已设置选项以将模型设置为仅在特定时间或onblur后更新。
您也可以在提交时将表单的值设置为原始,如
这是更新后的代码和plunker。注意,如果表单无效,将不会调用ng-submit。这是使用ng-submit而不是ng-click的另一个优点。
<form name="submitForm" ng-submit="saveForm();submitForm.$setPristine();">
<input ng-model="data.first" type="text" />
<input ng-model="data.second" type="text" />
<button >Submit</button>
</form>
http://plnkr.co/edit/2bWvPm9xNoVPFKYUhdUM?p=preview
相关文章:
- 通过JavaScript设置表单目标
- 在提交时设置表单隐藏值
- 无法使用bindingResult设置表单元素
- 设置表单上文本框的边框颜色
- 如何从服务器获取和设置表单的默认值
- JQuery val()在设置表单值时引发运行时错误
- 如何使用Javascript设置表单元素的值
- Flask wtf.quick_form运行一些 JavaScript 并设置表单变量
- JavaScript - 在“for”循环中设置表单输入属性
- jQuery:从参数字符串设置表单状态
- 无法通过 javascript 设置表单操作(错误:对象不支持此属性或方法)
- 使用 javascript 设置表单值
- 如何使用来自 iframe 父级的 javascript 设置表单的元素值
- 如何设置表单中文本字段的初始值?此值是从 JavaScript 函数生成的.如何在没有 botton 的情况下定义事件
- 复选框列出数据绑定并设置表单提交的复选框
- 在 asp.net 中设置表单元素默认值
- 设置表单验证功能时遇到问题
- 通过选定的选项属性设置表单输入属性
- 如何使用 CSS 设置表单样式
- 根据用户填写的字段动态设置表单操作