Ich erhalte einige Daten vom Datenbankserver und zeige sie in tabellarischem Format auf meiner GUI an. Ich möchte Folgendes in meinem GUI-Design erreichen:Lesezugriff nur mit ng-readonly dynamisch funktioniert nicht
(a) Jede Zelle in der Tabelle sollte bearbeitbar sein mit Ausnahme der ersten Spalte in der Tabelle. (b) Die erste Zeile der Tabelle sollte, wenn sie der GUI zum Akzeptieren neuer Eingaben von dem Benutzer neu hinzugefügt wird, von der obigen Regel ausgenommen werden, d. H. Alle Spalten der ersten Zeile sollten editierbar sein.
Um dies zu erreichen, schrieb ich den folgenden Code.
HTML-Code
<tbody>
<tr ng-repeat="x in sensordata">
<td>
<input class="form-control" type="text" ng-model="x.name" placeholder="Sensor name" ng-readonly="namereadonly" ng-init="ctrl2.setReadOnly(x.name,$index)"/>
</td>
<td>
<input class="form-control" type="text" ng-model="x.unit" placeholder="Measurement Unit" required/>
</td>
<td>
<input class="form-control" type="text" ng-model="x.type" placeholder="Sensor Type" required/>
</td>
<td>
<input class="form-control" type="text" ng-model="x.periodicity" placeholder="Periodicity" required/>
</td>
<td>
<input class="form-control" type="text" ng-model="x.formula" placeholder="Formula" required/>
</td>
<td>
<input class="form-control" type="email" ng-model="x.vendor" placeholder="Email Id" required/>
</td>
</tr>
</tbody>
Controller-Code ist wie folgt.
Wenn ich obigen Code ausführe, wird die erste Spalte aller Zeilen wie erwartet nicht bearbeitet. Aber wenn ich eine neue Zeile hinzufüge (indem ich ein neues leeres JSON-Objekt in das Sensordata-Array in einer anderen Funktion des gleichen Controllers eintrage), wird die erste Spalte der Zeile nicht editierbar, was laut dem ersten if nicht der Fall sein sollte Aussage in der obigen Methode. Ich kann nicht herausfinden, warum es passiert.
Das Problem wurde teilweise behoben, wenn ich die if-Anweisung wie folgt änderte: if (name === undefined || name === null || name === '') {$ scope.idx = false;} und if (Name! == '' || Name! == undefiniert || Name! == null) {$ scope.idx = true; console.log ('readonly');} "und ng-readonly =" $ index " . Dies kümmert sich wahrscheinlich um das Attribut readonly unabhängig für jedes Eingabeelement. Aber jetzt kann die erste Spalte der ersten Zeile der Tabelle bearbeitet werden, wenn sie nicht bearbeitet werden sollte, da ich der GUI noch keine neue Zeile hinzugefügt habe. –
ist es hilfreich, wenn Sie es als Geige teilen –