Angularjs 在 http 回调后$setPristine



我发现下面的代码很奇怪。在dataSvc.saves的回调之后,vm.bookDetails = {}; and vm.bookForm.$setPristine做什么?

angular.module('controllers',[])
  .controller('SecondController', function(dataSvc){
    var vm=this;
    vm.saveData = function () {
      dataSvc.save(vm.bookDetails).then(function(result) {
        vm.bookDetails = {};
        vm.bookForm.$setPristine();
      });
    };
    vm.numberPattern = /^d*$/;
  });

代码来自这里

ng-dirty 类告诉您表单已被用户修改

,而 ng-pristine 类告诉您表单尚未被用户修改。所以ng-dirt和ng-pristine是同一个故事的两个方面。

类设置在任何字段上,而表单有两个属性,$dirty 和 $pristine。

从 Angular.org

$setPristine意味着

将窗体设置为其原始状态。

此方法将窗体的$pristine状态设置为 true,即$dirty状态 如果为 false,则删除 ng-dirty 类并添加 ng-pristine 类。 此外,它将$submitted状态设置为 false。

您可以使用 $scope.form.$setPristine() 函数将表单重置为原始状态。 $setPristine() 是在 Angularjs 的 1.1.x 分支中引入

代码说明

angular.module('controllers',[])
  .controller('SecondController', function(dataSvc){
    var vm=this;
    vm.saveData = function () {
      dataSvc.save(vm.bookDetails).then(function(result) {
        // This code will reset the form/clear value of all ngmodel
        vm.bookDetails = {};
        // This code will set the validity of the form to invalid state, submitted cannot be made if pristine is set.
        vm.bookForm.$setPristine();
      });
    };
    vm.numberPattern = /^d*$/;
  });

最新更新