Ich versuche, Inline-Bearbeitung für eine Tabelle zu erstellen (ähnlich angular-xeditable), aber ich möchte nur nur eine Zeile gleichzeitig bearbeitet werden können. Momentan können Sie eine beliebige Anzahl von Zeilen im Bearbeitungsmodus haben.Angular Inline Edit Tabelle Singleton
Optionen
eine Liste von Zeilen im Bearbeitungsmodus halten, und sobald eine neue Zeile bearbeitet werden soll, wird ausgewählt, Schleife durch die Liste und gewaltsam beendet aus Bearbeitungsmodus setzte Anfrage Zeile im Bearbeitungsmodus und fügen Sie sie zur Liste hinzu. Dies erlaubt im Wesentlichen höchstens eine Zeile in der Liste zu sein, was dazu führt, dass jeweils eine Zeile editierbar ist. Aber ich zeige nicht, wie man die Zeilen aus dem Bearbeitungsmodus herausholt.
Es gibt eine Abbrechen-Schaltfläche, die den Bearbeitungsmodus verlässt. Verwenden Sie also jquery (oder angular.element), um eine Liste aller Abbruchschaltflächen zu erhalten und pragmatisch auf sie zu klicken - wiederum mit dem gewaltsamen Verlassen von Zeilen im Bearbeitungsmodus, aber das könnte die Geschwindigkeit für eine große Tabelle verlangsamen, da auf Abbrechen geklickt wird Zeilen, die nicht einmal im Bearbeitungsmodus sind.
<table class="table table-striped">
<thead>
<tr>
<th id="th-name">Name</th>
<th id="th-age">Age</th>
<th id="th-actions">Actions</th>
</tr>
</thead>
<tr ng-repeat="contact in model.contacts">
<td>
<span ng-show="edit != true">{{contact.name}}</span>
<input ng-show="edit" type="text" ng-model="model.selected.name" class="form-control" placeholder="Name">
</td>
<td>
<span ng-show="edit != true">{{contact.age}}</span>
<input ng-show="edit" type="text" ng-model="model.selected.age" class="form-control" placeholder="Name"></td>
<td>
<button ng-show="edit != true" id="table-edit" ng-click="edit = true; editContact(contact)" uib-tooltip="Delete" tooltip-trigger="mouseenter" tooltip-placement="bottom"><i class="fa fa-fw fa-pencil"></i></button>
<button ng-show="edit" id="table-save" ng-click="edit = false; saveContact($index)" uib-tooltip="Delete" tooltip-trigger="mouseenter" tooltip-placement="bottom"><i class="fa fa-fw fa-floppy-o"></i></button>
<button ng-show="edit" id="table-cancel" ng-click="edit = false; reset()" uib-tooltip="Delete" tooltip-trigger="mouseenter" tooltip-placement="bottom"><i class="fa fa-fw fa-trash"></i></button>
</td>
</tr>
</table>
ist hier ein Plunker Demo (alle Zeilen können in den Bearbeitungsmodus sein): Plnkr Demo `
Hier ist ein funktionierendes Demo von dem, was ich erreichen bin zu wollen, aber es ist Vorlagen . Es ruft getTemplate zu oft nach meinem Geschmack auf (ruft es jedes Mal auf, wenn ein Digest ausgeführt wird - Klicken auf Schaltflächen, Tippen, Anzeigen von Tooltip). Working Demo (Using templates)
Gute Problemumgehung. Ich habe Ihre "Redo Display" -Schleife verschoben, um die Funktion zurückzusetzen, da das Abbrechen der Bearbeitung auch alle Tasten anzeigen sollte (http://plnkr.co/edit/mTa8EPmuwEOw1DBHLAHN?p=preview). Aber wie Sie aus der Demo mit Vorlagen sehen können, wäre es eine ideale Erwartung, alle Schaltflächen anzuzeigen und auf andere Zeilen zu klicken, ohne speichern/abbrechen zu müssen. –
Ändern Sie einfach das Element zum Ein- und Ausblenden ('eles') um das Eingabefeld zu sein. Außerdem müssten Sie den Spalten, die den Inhalt enthalten, einen Klassennamen hinzufügen. Die Logik sollte jedoch die gleiche sein. –
Es führt immer noch nicht zum gewünschten Ergebnis (alle Daten und Schaltflächen anzuzeigen und auf eine Bearbeitungsschaltfläche klicken, um den Bearbeitungsmodus für die entsprechende Zeile aufzurufen). Bitte sehen Sie meine Antwort, und wenn Sie ein Feedback haben, ist es sehr willkommen und geschätzt! Danke für Ihre Hilfe! –