http回调后的Angularjs $ setPristine

时间:2017-01-15 11:53:53

标签: javascript angularjs

我发现下面的代码很奇怪。在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*$/;
  });

代码来自here

1 个答案:

答案 0 :(得分:1)

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

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

来自Angular.org

$ setPristine表示

  

将表单设置为其原始状态。

     

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

您可以使用$ scope.form。$ setPristine()函数将表单重置为pristine状态。 $ 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*$/;
  });