2016-01-13 9 views
7

私は編集ボタンを使用しました。編集した後、私は保存ボタンとキャンセルボタンがありません。 編集した後にキャンセルボタンをクリックすると、前のテキストが表示されます。誰もがここにhttp://jsfiddle.net/F7K63/143/anglejsの編集機能の取り消しボタンを実装する方法

<tr ng-repeat="item in items"> 
     <td> 
      <span ng-hide="item.editing">{{item.name}} <button ng-click="editItem(item)">Edit</button></span> 
      <input ng-show="item.editing" ng-model="item.name" autofocus /> 
      <button ng-show="item.editing" ng-click="doneEditing(item)">Save</button> 
      <button ng-show="item.editing" ng-click="Cancel(item)">Cancel</button> 
     </td> 
    </tr> 
+0

編集するアイテムのコピーを作成する必要があります。キャンセルを押すと、コピー元が元に戻されます。 – Christoph

+0

あなたは上記のjsfiddleで表示することができます –

+2

このフィドルは助けるかもしれません:http://jsfiddle.net/7Lbjuhsq/ – pixelbits

答えて

8

編集したいあなたのオブジェクトのコピーを作成します。キャンセルを押すと原点が交換されます。 fiddle

$scope.editItem = function (item) { 
    item.editing = true; 
    item.backupName = angular.copy(item.name); 
} 

$scope.doneEditing = function (item) { 
    item.editing = false; 
    delete item.backupName; 
    //do some background ajax calling for persistence... 
}; 
$scope.Cancel = function (item) { 
    item.editing = false; 
    item.name = angular.copy(item.backupName); 
    delete item.backupName; 
}; 
1

最速のオプションは、あなたの$ scope.eidtItemと$ scope.Cancel機能を編集することです
のjsフィドル私を助けてくださいすることができます。

$scope.editItem = function (item) { 
    item.editing = true; 
    item.oldName = item.name; 
} 

...

$scope.Cancel = function (item) { 
    item.editing = false; 
    item.name = item.oldName; 
}; 

http://jsfiddle.net/F7K63/147/

+0

私はjsfiddleを含んでいます。それはOKであるはずです。これをチェックしてください。 –

+0

item.oldNameとitem.nameは同じオブジェクトを参照します.. – Christoph

+0

@Christoph item.oldNameとitem.nameはStringであり、itemオブジェクトの別個のプロパティです。私はそれがOKだと思う。どのような問題がありますか? ここでアイテムオブジェクトの内容を見ることができます:http://jsfiddle.net/F7K63/148/ 単一のStringをコピーするのにangular.copyを使う必要はありません。 –

関連する問題