Vorbehalt: Ich habe gerade mit Client Side Scripting begonnen und Angular JS ist das erste, was ich lerne und jetzt habe ich das Gefühl, ich hätte mit Javascript beginnen sollen. PS: Ich möchte keine Bibliotheken von Drittanbietern verwenden. Ich möchte lernen zu programmieren.Wie macht man dynamische Inhalt editierbare Tabelle mit eckigen JS?
Wie auch immer, ich habe dynamische Tabelle, die ich mit editable editable = True-Attribut von HTML machen möchte.
Problem: Wie bekomme ich die bearbeiteten Daten? Immer wenn ich auf submit klicke und dieses Objekt an die check() Funktion übergebe. Ich habe keine bearbeiteten Werte. Gibt es eine Möglichkeit, nur editierten Wert übergeben, wenn es schmutzig ist. Es hat Seitennummerierung, wenn auf der nächsten Seite die bearbeiteten Werte weg sind. Ich weiß, dass ich jedem td-Element mit $ -Index eine eindeutige ID gegeben habe. Aber ich weiß nicht, wie ich vorgehen soll.
Jede Hilfe oder Anleitung wird geschätzt. Controller und andere sind in meiner Route definiert.
<div>
<form ng-submit="check(this)">
<table class="table table-striped table-hover">
<tbody>
<tr ng-repeat="data in currentItems">
<td contenteditable="true >{{data.EmpNo}}</td>
<td contenteditable="true">{{data.isActive}}</td>
<td contenteditable="true">{{data.balance}}</td>
<td contenteditable="true">{{data.age}}</td>
<td contenteditable="true">{{data.eyeColor}}</td>
<td contenteditable="true">{{data.fname}}</td>
</tr>
</tbody>
<tfoot>
<td>
<div class="pagination pull-right">
<li ng-class="{'disabled': previousPage}">
<a ng-click="previousPage()" >Previous</a>
</li>
<li ng-repeat="page in pageLengthArray track by $index">
<a ng-click="pagination($index)">{{$index+1}} </a>
</li>
<li disabled="disabled">
<a ng-click="nextPage()" ng-class="{'disabled':nextPage}>Next </a>
</li>
</div>
</td>
</tfoot>
</table>
<input type="submit" value="Submit">
</form>
$scope.currentPage=0;
$scope.pageSize=10;
$scope.currentItems;
$scope.tableData;
$http.get('../json/generated.json').then(function(response){
$scope.tableData=response.data;
$scope.pageLength=Math.ceil($scope.tableData.length/$scope.pageSize);
$scope.currentItems=$scope.tableData.slice($scope.currentPage,$scope.pageSize);
$scope.pageLengthArray= new Array($scope.pageLength);
});
$scope.pagination=function(currentPage){ $scope.currentItems=$scope.tableData.slice($scope.pageSize*currentPage,$scope.pageSize*currentPage+$scope.pageSize);
$scope.currentPage=currentPage;
}
$scope.nextPage=function nextPage(argument) {
$scope.currentPage++; $scope.currentItems=$scope.tableData.slice(($scope.pageSize*$scope.currentPage),($scope.pageSize*($scope.currentPage)+$scope.pageSize));
}
$scope.previousPage=function previousPage(argument) {
$scope.currentPage--;
$scope.currentItems=$scope.tableData.slice(($scope.pageSize*$scope.currentPage),($scope.pageSize*($scope.currentPage)+$scope.pageSize));
}
so dass Sie Ihre 'check' Funktion wünschen, empfangen nur die Objekte, die bearbeitet wurden? – SuperVeetz
Sie können '$ dirty' verwenden, um zu überprüfen, welche Daten geändert wurden. – ypp
Ja @SuperVeetz, aber es wird mir gut gehen, solange ich die bearbeiteten Werte zusammen mit einem Schlüssel, der besagt, dass sie bearbeitet wurden, aus dem ganzen Objekt herausholen kann. Ich kann einfach die bearbeiteten Felder nehmen und diese in der Datenbank aktualisieren. Danke – Kid101