2016-01-13 78 views
7

我已經使用編輯按鈕。編輯後我有保存並取消按鈕.save按鈕正在工作,因爲我的預期,但不是取消按鈕。 如果我在嘗試編輯後單擊取消按鈕,它應顯示以前的文本。任何人都可以請幫我在這裏http://jsfiddle.net/F7K63/143/如何在angularjs中實現編輯功能的取消按鈕

<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功能。

$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。應該沒問題。請檢查一下。 –

+0

item.oldName和item.name引用同一個對象。 – Christoph

+0

@Christoph item.oldName和item.name是Strings,它們是item對象的不同屬性。我認爲沒關係。你看到什麼問題? 您可以在此處看到項目對象內容:http://jsfiddle.net/F7K63/148/ 您不需要使用angular.copy來複制單個字符串。 –

相關問題