2017-04-15 9 views
0

hier ist mein plnkr http://plnkr.co/edit/0W1SZll1BOK5uuEtdycy?p=previewAngular: Wie werden bearbeitete Werte gespeichert?

im speichern bearbeiteten Werte von meinem bearbeiten Kontakt modal versuchen.

hier ist ein Bearbeitungsverfahren, die aktuellen Wert von Objekt nimmt:

$scope.edit = function(terminal) { 
$scope.name = terminal.name; 
$scope.last = terminal.last; 
$scope.age = terminal.age; 
} 

ich über Winkel Kopie lesen, es etwas anderes? jemand kann mir bitte helfen ill glat zu lernen, wie man das macht

Antwort

1

Sie sind viel zusätzliche manuelle Arbeit durch den Verzicht auf ein Objekt in ng-model zu schaffen, in der erste Ort anstelle der Verwendung einzelner Eigenschaften des Bereichs.

Es gibt eine goldene Regel auch, dass if you don't have a dot in ng-model you are doing it wrong

Sie so etwas wie:

<input ng-model="terminal.name"> 
<input ng-model="terminal.age"> 

dann entlang der folgenden Zeilen arbeiten:

$scope.edit = function(terminal) { 
    // store reference to terminal being edited 
    $scope.currentTerminal = terminal; 
    // make a copy so live one is not affected -- will be used in form 
    $scope.terminal = angular.copy(terminal); 
} 

$scope.save = function(){ 
    // update stored original with changes 
    angular.extend($scope.currentTerminal, $scope.terminal); 
    // reset terminal used in form 
    $scope.terminal ={}; 
} 

würde ich dringend empfehlen, Sie loszuwerden jQuery erhalten und bootstrap.js und benutze angular-ui-bootstrap insted

+0

danke charlietfl, habe eine Frage: im Speichern der Daten in einer Datenbank mit PHP, brauche ich neue Funktion, um die Bearbeitungswerte zu speichern? oder die extend-Methode macht das automatisch? – torresito

+1

um so mehr Grund, ein Objekt zu verwenden ... sehr einfach, es in ein '$ http' zu stecken und nur die Ansichtsversion auf Erfolg zu aktualisieren – charlietfl

+0

hi charlietfl, versuchte, ngmodel mit Punkt wie used zu tun, aber dann, wenn ich klicke die Schaltfläche Bearbeiten und danach die Schaltfläche Hinzufügen, gibt es Werte auf der Eingabe Formular hinzufügen – torresito

2

Verwenden Sie angular.copy beim Zuweisen von Wert von Objekt oder Array zu einer anderen Variablen und dieser Objektwert sollte nicht geändert werden.

Ohne tiefe Kopie oder Verwendung von angular.copy, wird der Wert der Eigenschaft geändert oder eine neue Eigenschaft hinzugefügt, um alle Objekte zu aktualisieren, die auf dasselbe Objekt verweisen. Ihr JS sieht dann so aus:

$scope.edit = function(terminal) { 
    $scope.name = angular.copy(terminal.name); 
    $scope.last = angular.copy(terminal.last); 
    $scope.age = angular.copy(terminal.age); 
    } 
+0

danke hamza, h Ave eine Frage: im Speichern der Daten in eine Datenbank mit PHP, brauche ich neue Funktion, um die Bearbeitungswerte zu speichern? oder die Kopiermethode das automatisch? – torresito

+1

Setzen Sie diese Werte in einige zusätzliche Javascript-Variablen mit der gleichen angular.copy, nicht in einigen zusätzlichen $ scope-Variablen, da $ scope uns sagt, welche Werte mit unserer Ansicht verknüpft werden. – hamzox

1

Sie müssen den Index der Zeile übergeben, die Sie bearbeiten werden. Übergeben Sie den Index, wenn Sie auf Bearbeiten klicken.

Änderung script.js

$scope.edit = function(terminal,index) { 

    $scope.name = terminal.name; 
    $scope.last = terminal.last; 
    $scope.age = terminal.age; 
    $scope.edit_index = index 

} 


$scope.saveEdit =function(){ 
    index = $scope.edit_index 
    $scope.terminals[index].name = $scope.name; 

    } 

Änderung index.html

<td> <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#editModalLong" ng-click="edit(terminal,$index)">Edit</button> 

<button type="button" class="btn btn-primary" data-dismiss="modal" ng-click="saveEdit()">Save</button> 

http://plnkr.co/edit/GpVB2dUiHCY6NslQDuBe?p=preview

Verwandte Themen