編輯,更容易回答:在表單元素上使用require
或ng-require
屬性,如果出現錯誤,則保留表單$pristine
。
如果需要不想要的東西:
注 - 您需要爲$ setPristine()角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>
在控制器或指令,$監視更改模型,然後通過對象循環,如果所有屬性都undefined
或看''
。 (如果在鏈接功能使用時,您通常會代替$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
感謝你!我的問題是 - 在可重用的範例中使用此示例指令不會真正起作用,因爲它取決於一個叫做「輸入」的模型 - 我有許多模型的'用戶','產品'等,所以我希望只是檢查任何形式的通用形式元素[] n檢查基礎模型。是否可以在''元素上使用'$ watch'或者其他等價物? – mmacneil007
當然,我現在正在嘗試。 $看一個屬性對象有點棘手;)。 – rGil