我正在与AngularJS一起显示应用程序键(应用程序标识符)表,我想使用编辑按钮在该表行中显示一个小表格。然后用户可以编辑字段并单击“保存”或“取消”
演示:http://jsfiddle.net/Thw8n/
我的内联表单效果很好。我单击编辑,然后出现一个表格。取消也很棒。
我的问题是
editMode
这是我的控制器中使用的实际代码Im(在JSFiddle Im中无法进行http调用)。第一个$ http填写表格,editAppKey函数由保存按钮调用。
function AppKeysCtrl($scope, $http, $location) { $http({ method: 'POST', url: 'http://' + $location.host() + ':1111/sys/appkey/save', data: { // How do I get the data? } }). success(function(data, status, headers, config) { $scope.appkeys = data; }). error(function(data, status, headers, config) { $scope.appkeys = [{ "appkey" : "ERROR", "name" : "ERROR", "created" : "ERROR" }]; }); $scope.editAppKey = function() { $http({ method: 'POST', url: 'http://' + $location.host() + ':1111/sys/appkeys' }). success(function(data, status, headers, config) { alert("Success!"); $scope.editMode = false; }). error(function(data, status, headers, config) { alert("There was an error."); }); } }
当我们按下“编辑”按钮并更改一个字段时,我们也会更改我们的主要模型appkeys。这意味着在“取消”上,我们需要恢复旧模型。
appkeys
这意味着我们至少需要:
因此,这是一段HTML代码:
<td> <button type="submit" data-ng-hide="editMode" data-ng-click="editMode = true; editAppKey(entry)" class="btn btn-default">Edit</button> <button type="submit" data-ng-show="editMode" data-ng-click="editMode = false; saveField()" class="btn btn-default">Save</button> <button type="submit" data-ng-show="editMode" data-ng-click="editMode = false; cancel()" class="btn btn-default">Cancel</button> </td>
而我们的控制器:
$scope.newField = {}; $scope.editing = false; $scope.appkeys = [ { "appkey" : "0123456789", "name" : "My new app key", "created" : tmpDate }, { "appkey" : "abcdefghij", "name" : "Someone elses app key", "created" : tmpDate } ]; $scope.editAppKey = function(field) { $scope.editing = $scope.appkeys.indexOf(field); $scope.newField = angular.copy(field); } $scope.saveField = function() { if ($scope.editing !== false) { $scope.appkeys[$scope.editing] = $scope.newField; $scope.editing = false; } }; $scope.cancel = function() { if ($scope.editing !== false) { $scope.appkeys[$scope.editing] = $scope.newField; $scope.editing = false; } };
演示版 **[Fiddle](http://jsfiddle.net/Thw8n/4/)**
**[Fiddle](http://jsfiddle.net/Thw8n/4/)**
[编辑]
我想一次编辑几行,newFields而是 使用数组$scope.newField
newFields
$scope.newField