Angular でコピー

Rana Hasnain Khan 2022年4月12日
Angular でコピー

angular.copy を Angular でいつどのように使用するかを示します。

Angular の angular.copy

angular.copy は、別の変数にコピーしたいオブジェクトの値を保持するための強力なメソッドです。

angular.copy を使用する場合、プロパティの値を変更するか、新しいプロパティを追加すると、同じオブジェクトを参照するすべてのオブジェクトが更新されます。angular.copy は、万能のコピー機能を意図したものではありません。

いくつかの制限もあります。angular.copy に宛先が指定されていない場合、オブジェクトまたは配列のコピーが作成されます。

宛先を指定すると、配列のすべての要素とオブジェクトのプロパティが削除され、ソースのすべての要素/プロパティがそこにコピーされます。提供されたソースがオブジェクトまたは nullundefined を含む配列でない場合、ソースが返されます。

提供されたソースが提供された宛先と同一である場合、例外がスローされます。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 を使用しました。

出力:

Angular コピー結果

Rana Hasnain Khan avatar Rana Hasnain Khan avatar

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