1

オブジェクトがダーティになる前の状態に戻す方法が 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>
4

1 に答える 1