$scope.$watchの 2 番目のパラメーターは、2 つのパラメーターを受け取る関数です。最初のパラメーターは新しい値で、2 番目のパラメーターは古い値です。
オブジェクト全体を単純に監視し、$scope.$watchfoo
の 3 番目のパラメーターを に設定して、オブジェクトを参照ではなく等しいかどうか比較することができます。オブジェクトが非常に大きい場合、これはかなり悪い考えになる可能性があることに注意してください。true
$scope.$watch(
'foo',
function (newFoo, oldFoo) {
// send old $scope.foo to server with the
// previous $scope.foo.bar and $scope.foo.baz
},
true
);
foo.bar
個別に視聴することもできますfoo.baz
:
var sendAndReplace = function (parameterName, oldParameter) {
oldFoo = angular.copy($scope.foo);
oldFoo[parameterName] = oldParameter;
// send old oldFoo to server with the
// previous oldFoo.bar oldFoo.baz
};
$scope.$watch('foo.bar', function (newValue, oldValue)) {
sendAndReplace('bar', oldValue);
});
$scope.$watch('foo.baz', function (newValue, oldValue)) {
sendAndReplace('baz', oldValue);
});