我想知道AngularJS中是否有办法在对象变脏之前恢复它的状态。
我有一个简单的用例,其中有一个,edit
按钮。如果有人单击编辑按钮,获取相关对象的状态,然后单击取消按钮,我希望对象的状态恢复到其先前的状态(变脏之前的状态)。save
cancel
在我点击cancel
按钮的那一刻,对象的状态看起来发生了变化,即使它实际上没有。
我可以通过AngularJS提供的一些功能以某种方式实现它吗?
与给定帖子相关的代码:
控制器中的代码:
$scope.uneditedObject = null;
$scope.handleEdit = function(state, index) {
$scope.uneditedObject = angular.copy($scope.objects[index]);
$scope.state = state;
$scope.index = index;
if(state == 'VIEW') {
$scope.objects[index] = $scope.uneditedObject
$scope.uneditedObject = null;
}
}
HTML 代码:
<tr ng-repeat="object in objects">
<td ng-class="{'editing': $index == index}" >
{{object.name}}
</td>
<td >
<input type="text" numbers-only class="form-control" ng-model="object.discount" >
</td>
<td ng-class="{'editing': $index == index}" >
<a class="btn btn-sm red" ng-click="handleEdit('EDIT', $index)" ng-show="state != 'EDIT'">
Edit
</a>
<a class="btn btn-sm blue" ng-show="state == 'EDIT'" ng-show="state != 'EDIT'" ng-click="update(...)">
Save
</a>
<a class="btn btn-sm default" ng-show="state == 'EDIT'" ng-click="handleEdit('VIEW', $index)">
Cancel
</a>
</td>
</tr>