编辑,更简单的答案:在表单元素上使用require
or属性,如果出现错误则保留表单。ng-require
$pristine
如果不需要 require:
注意 - 您需要 $setPristine() 的 Angular 版本 1.1.x。
假设ng-model
表单中的所有 ' 都是同一个对象的属性,您可以$watch
在对象中循环遍历属性以查看它们是否为undefined
空''
字符串,以及$setPristine()
是否为空字符串。
表单 HTML - 所有模型都是input
对象的属性:
<form name="form">
<input type="text" name="one" ng-model="input.one">
<input type="text" name="two" ng-model="input.two"><br/>
<input type="submit" ng-disabled="form.$pristine">
</form>
在控制器或指令中, $watch 模型的变化,然后循环遍历对象,查看所有属性是否为undefined
or ''
。scope
(如果在链接函数中使用,您通常会使用$scope
.
var setPristine = function(input){
if (input === undefined || input === ''){
return 0;
}
return 1;
}
$scope.$watch('input', function(i){
var flag = 0;
//loop through the model properties
for (var obj in i){
flag +=setPristine(i[obj]);
}
// if nothing in the model object, setPristine()
if(flag===0){
$scope.form.$setPristine();
}
}, true)// true allows $watch of object properties, with some overhead