在AngularJS中切换$ pristine和$ dirty

时间:2017-06-20 22:00:03

标签: angularjs

我想通过使用$ dirty属性并相应地设置标志来检测用户何时在任何表单字段中输入值。毫不奇怪,这有效:

$scope.$watch('formDetails.$dirty', function() {
  USR.userInputRecorded = true;
});

但我也想检测用户何时/是否清空所有字段并有效地将表单恢复到其原始空状态。下面的代码段不起作用,我不知道为什么。是否有办法观察表单何时更改回"不是脏"?

$scope.$watch('formDetails.$pristine', function() {
  USR.userInputRecorded = false;
});

感谢。

1 个答案:

答案 0 :(得分:0)

试试这个:

$scope.$watch('formDetails.$dirty', function(value) {
  if (value === '') {
    // field has been emptied;
    your.form.$setPristine(true);
  } else {
    USR.userInputRecorded = true;
  }
});