我正在尝试以表格的形式获取所有字段并将其设置为脏。

像这样的东西:

 $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

在这里使用指令的好处是,在表单准备好之前,它不会运行链接代码。通过一些小的重构,它也可以在多个表单/控制器之间重用。

07-26 04:31