2014-03-24 2 views
15

Ich zeige eine Liste von Elementen an, von denen jedes einen "Bearbeiten" -Knopf daneben hat. Ein Klick darauf öffnet ein eckiges ui modales Fenster und der Benutzer kann einige Eigenschaften des bestimmten Gegenstandes ändern.Verwenden von AngularJS "copy()", um Referenzprobleme zu vermeiden

Nun, was mich nervte war, dass bei der Eingabe in diesem Bearbeitungsfenster, das spezifische Element in der Liste der Elemente die Änderungen sofort widerspiegelte. Ich wollte nur, dass es aktualisiert wird, wenn der Benutzer im Modal auf "OK" geklickt hat, und überhaupt nicht geändert hat, wenn der Benutzer "Abbrechen" gewählt hat.

Meine Problemumgehung verwendet Kopie ein zu machen, na ja, Kopie des gewählten Elements, das dann als Modell für die Ansicht dient:

var modalInstance = $modal.open({ 
    templateUrl: 'scripts/app/views/editBond.html', 
    controller: function ($scope, $modalInstance, bond) { 
     $scope.bond = angular.copy(bond); 
     $scope.ok = function() { 
      $modalInstance.close($scope.bond); 
     }; 
     $scope.cancel = function() { 
      $modalInstance.dismiss('cancel'); 
     }; 
    }, 
    resolve: { 
     bond: function() { 
      return bond; 
     } 
    } 
}); 

Nutzt angular.copy() angebracht, solche Probleme zu vermeiden? Ist das überhaupt ein Problem?

Antwort

13

Ja, mit angular.copy() ist hier absolut angemessen. Wenn Sie etwas fortgeschrittener möchten, können Sie zur Kasse gehen angular-history

+0

Danke, Christoph: o) – peter

Verwandte Themen