【发布时间】:2014-12-08 11:17:24
【问题描述】:
我想知道 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>
【问题讨论】:
标签: javascript angularjs forms dirty-data