Ich möchte eine Liste von Elementen machen, Doppelklick auf ein Element macht es editierbar. Ich folgte this answer und schrieb den folgenden Code (JSBin).Nur ein Doppelklick kann ein Objekt editierbar machen
Am Anfang sind alle Elemente schreibgeschützt; Doppelklicken auf ein Element macht es editierbar. Nachdem ich es bearbeitet habe, merke ich, dass es NICHT mehr schreibgeschützt ist. Ich denke, die richtige Logik wäre once we have modified one item, it becomes read-only once again, only double-clicking could change it
.
Kann jemand den Code ändern, um dies zu erreichen?
var app = angular.module('app', []);
app.controller('Ctrl', ['$scope', function($scope) {
$scope.items = [{
name: "item #1"
}, {
name: "item #2"
}, {
name: "item #3"
}];
$scope.eEditable = -1;
}])
input {
font-size: 20px;
border: none;
background-color: transparent;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
<div ng-app="app" ng-controller="Ctrl">
<table>
<tr ng-repeat="item in items">
<td>
<input type="text" value="{{item.name}} {{$index}}" ng-readonly='$index !== eEditable' ng-dblclick="eEditable = $index" />
</td>
</tr>
</table>
{{count}}
</div>
Es funktioniert, danke ... Sie eine Idee über meine optionale Frage haben Sie? – SoftTimur
Ich sehe keine Validierung im aktuellen Code? Vielleicht können Sie es in einer "Funktion" in Ihrem 'Controller' mit' ng-enter' Richtlinie tun (das ist keine Standard-Anweisung, Sie können dafür googeln). – Arg0n