你可以在一个元素而不是表单上重置$ pristine

时间:2014-12-23 14:38:06

标签: javascript angularjs

我有一个包含网格(表格行)的表单,每行都有一个checkBox,允许您为操作选择该行(删除等)。还有一个选择所有checkBox,允许您选择所有行。当我点击任意checkBox选择一行时,表单不再是$pristine。对于我的用例,我不希望仅仅因为用户选中该框而触摸或非原始的表单。我知道我可以重置整个表单,但我需要的是在控件(元素)上设置$pristine。我确实尝试在$pristine中设置$timeout,但这似乎不起作用。

            $timeout(function () {

                // this did not work either
                scope.myForm.myelementName.$pristine = true;
                // this did not work either
                scope.myForm.myelementName.$setPristine();
            });

1 个答案:

答案 0 :(得分:0)

function setFormPristine(form) {

            var isPristine = true;
            angular.forEach(form, function (value, key) {

                if ((typeof (value) != "undefined") && value.hasOwnProperty('$pristine') && !value.$pristine) {

                    isPristine = false;
                    return;
                }
            });

            if (isPristine) {
                form.$setPristine();
            }
}