私たちはangular.copyとangular.extendを試しました。ただし、これらは両方ともプロパティ値をコピーします。あるオブジェクトのプロパティを、値なしで別のオブジェクトにコピーするにはどうすればよいですか?
これは、javascript-objectをすばやくクリアする方法に基づいた試みのフィドルです。
angular.module('App', []);
function Ctrl($scope) {
function copyNotValues(obj) {
var newObj = angular.copy(obj);
for (prop in newObj) {
if(newObj.hasOwnProperty(prop))
{
newObj[prop] = null;
}
};
return newObj;
}
$scope.master = {
foo: 'original foo',
bar: 'original bar'
};
$scope.copy = angular.copy($scope.master);
$scope.extend = angular.extend($scope.master);
$scope.copyNotValues = copyNotValues($scope.master);
}
JavaScriptにはクラスの概念がありません。プロトタイプの継承を使用します。つまり、別のオブジェクトをコピーすることによってのみ新しいオブジェクトを作成できます。それを行うと、プロパティを取得します。
これを回避するには、プロパティ値のない「マスター」オブジェクトを作成します。このようなもの:
master = {
foo: '',
bar: ''
};
次に、新しいキーワードを使用して、オブジェクトの新しい「インスタンス」を作成できます。
$scope.master = new master();
$scope.master.foo = 'original foo';
$scope.master.bar = 'original bar';
オブジェクトの新しいインスタンスを作成する必要がある場合は、コピーではなく、元のインスタンスに戻ります。
$scope.masterCopy = new master();
これは実際にはJavaScriptの問題であり、Angular固有の問題ではありません。理論的には、オブジェクトの新しいインスタンスを作成する関数を記述し、プロパティをループしてすべてをnullまたは空の文字列に設定できると思います。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加