我正在尝试以表格的形式获取所有字段并将其设置为脏。
像这样的东西:
$timeout(function () {
$('input').each(function(){
$(this).$dirty=true;
});
}, 0);
这是行不通的。我确实知道,类似这样的方法可以正常工作:
$scope.form.uName.$dirty = true;
但是,当我使用jquery遍历所有字段时,出现了问题。
这是小提琴:http://jsfiddle.net/Qdk5M/1302/
感谢任何帮助。谢谢..
最佳答案
使用link
函数创建一个指令,该指令可循环访问表单属性。使用匹配项可避免任何包含$
的表单对象属性仅进入表单字段。将这些的$dirty
属性设置为true
:
.directive('makeDirty', function(){
return function(scope, elem, attr) {
angular.forEach(scope.form, function(val, key){
if(!key.match(/\$/)) {
val.$dirty = true;
}
});
scope.form.$setDirty(); // you can make the form itself $dirty if you wish to
}
});
Updated Fiddle
在这里使用指令的好处是,在表单准备好之前,它不会运行链接代码。通过一些小的重构,它也可以在多个表单/控制器之间重用。