AngularJS - 检查模型的字段是否与初始值相同

时间:2016-12-16 14:46:47

标签: javascript angularjs angularjs-ng-model

如果我有以下对象$scope.object1,它看起来像这样:

{
 "firstName": "Name"
 "lastName": "Name"
 "startingDate": "08/Nov/2016"
 "endingDate": "16/Dec/2016"
 "description": "asd"
}

我有一个表单从后端获取这些值,并在输入字段中使用它们来表示日期和描述。 这些字段是可编辑的,因此更改表单字段中的startingDate将更改object1中的开始日期。

我需要根据$scope.object1的初始值显示一些内容与提交表单后的值相同。

换句话说,如果没有任何改变。

如何保存object1的初始值并在修改表单后将它们与值进行比较?

2 个答案:

答案 0 :(得分:0)

您可以在编辑对象之前使用java.util.logging存储对象,并在编辑后使用angular.copy()将其与修改后的版本进行比较

angular.equals()

答案 1 :(得分:0)

Angular有两种不同的方法来检查对象的变化。

1-检查表单是否更改 如果您在表单中使用类似ng-model的对象,则可以使用属性$ dirty。

<form name="myForm" ng-submit="processForm()" class="p-lg">
    //inputs
    <input type="text" id="firstName" ng-model="object1.firstName">
   //...
</form>

控制器

...
var objCopy = angular.copy($scope.object1);
...
$scope.processForm = function(){
  if($scope.myForm.$dirty){
    console.log('some field in the object change');
    //you can check the specific variable that you want and use the old one
  }
}
...

2-观看对象或特定密钥(将在每个摘要中进行评估)

//controller
     $scope.$watch('object1.firstName', function(newVal, oldVal){
            console.log('firstName change',oldVal, newVal );
        }, true);