Usando AngularJS “copy ()” para evitar problemas de referência

Estou exibindo uma lista de itens, cada um dos quais com um botão "editar" ao lado. Um clique que abre uma janela modal da interface do usuário angular e o usuário pode alterar algumas propriedades do item específico.

Agora, o que me incomodou foi que, ao digitar nesta janela de edição, o item específico na lista de itens refletia as alterações imediatamente. Eu só queria que ele fosse atualizado quando o usuário clicasse em 'ok' no modal e não mudasse se o usuário escolhesse 'cancelar'.

Minha solução alternativa usa copy para fazer, bem, uma cópia do item escolhido que serve como modelo para a exibição:

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;
        }
    }
});

O uso de angular.copy () é apropriado para evitar esses problemas? Isso é um problema de escopo?

questionAnswers(1)

yourAnswerToTheQuestion