Angularjs 如何将作用域的深度复制到一个没有';t跟踪原始范围的更改?

Angularjs 如何将作用域的深度复制到一个没有';t跟踪原始范围的更改?,angularjs,Angularjs,我用的是Angular JS,我有两个示波器 $scope.selected = { ids: [] }; $scope.copy = { ids: [] }; 当我点击一个按钮时,我想要$scope.copy从$scope.selected获取元素,所以我这样做了 <button ng-click="copy=selected">copy</button> 当原始作用域中的值被更新时,如何创建一个不更新的副本?使用应该可以做到这一点 <but

我用的是Angular JS,我有两个示波器

$scope.selected = {
    ids: []
};

$scope.copy = {
    ids: []
};
当我点击一个按钮时,我想要
$scope.copy
$scope.selected
获取元素,所以我这样做了

<button ng-click="copy=selected">copy</button>
当原始作用域中的值被更新时,如何创建一个不更新的副本?

使用应该可以做到这一点

<button ng-click="copyScope()">copy</button>

function copyScope () {
    $scope.copy = angular.copy($scope.selected);
}

<button ng-click="copyScope()">copy</button>

function copyScope () {
    $scope.copy = angular.copy($scope.selected);
}
<div ng-app="myApp" ng-controller="myController">
    <button ng-click="copyOriginal()">copyOriginal</button>
    <button ng-click="touchOriginal()">touchOriginal</button>
    <pre> {{original}} </pre>
    <pre> {{copy}} </pre>
</div>
$scope.original = [1, 2, 3];
$scope.copy = [];

$scope.touchOriginal = function () {
    $scope.original.push(4);
};

$scope.copyOriginal = function () {
    $scope.copy = angular.copy($scope.original);
    console.log($scope.copy);
}

$scope.$watch('copy', function (newCopy, oldCopy) {
    // Nothing should happen here when you trigger `touchOriginal()`
    console.log(newCopy, oldCopy);
});