Angular でコピー
angular.copy
を Angular でいつどのように使用するかを示します。
Angular の angular.copy
angular.copy
は、別の変数にコピーしたいオブジェクトの値を保持するための強力なメソッドです。
angular.copy
を使用する場合、プロパティの値を変更するか、新しいプロパティを追加すると、同じオブジェクトを参照するすべてのオブジェクトが更新されます。angular.copy
は、万能のコピー機能を意図したものではありません。
いくつかの制限もあります。angular.copy
に宛先が指定されていない場合、オブジェクトまたは配列のコピーが作成されます。
宛先を指定すると、配列のすべての要素とオブジェクトのプロパティが削除され、ソースのすべての要素/プロパティがそこにコピーされます。提供されたソースがオブジェクトまたは null
と undefined
を含む配列でない場合、ソースが返されます。
提供されたソース
が提供された宛先と同一である場合、例外がスローされます。File、Map、ImageData、MediaStream、Set、WeakMap、getter、setter など、angular.copy
によって正しく処理されないオブジェクトタイプ。
angular.copy
は変数を深く複製します。変数のディープコピーは、元の変数と同じメモリアドレスを共有しないものです。
たとえば、ユーザーの入力を受け取り、angular.copy
を使用するフォームを作成しましょう。HTML
コードは次のようになります。
# angular
<body ng-app="NgCopy">
<div ng-controller="NgController">
<form novalidate class="simple-form">
<label>Name: <input type="text" ng-model="user.name" /></label><br />
<button ng-click="ngreset()">RESET</button>
<button ng-click="ngupdate(user)">SAVE</button>
</form>
<pre>form = {{user | json}}</pre>
<pre>member = {{member | json}}</pre>
</div>
</body>
そして、script.js
のコードは次のようになります。
# angular
(function(angular) {
'use strict';
angular.
module('NgCopy', []).
controller('NgController', ['$scope', function($scope) {
$scope.member = {};
$scope.ngreset = function() {
$scope.user = angular.copy($scope.member);
};
$scope.ngupdate = function(user) {
angular.copy(user, $scope.member);
};
$scope.ngreset();
}]);
})(window.angular);
上記の例に見られるように、angular.copy
を 2 回使用しました。$scope.user = angular.copy($scope.member);
でこれを 1つのパラメーターで使用し、angular.copy(user, $scope.member);
で使用しました。2つのパラメーターで angular.copy
を使用しました。
出力:
Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.
LinkedIn