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