我的控制器中有一个对象$ scope.foo.我想监视$ scope.foo.bar和$ scope.foo.baz中的任何更改并执行get请求并替换$ scope.foo对象中的所有数据.在发生此更改之前,我想将$ scope.foo的数据发送到具有旧$ scope.foo.bar和$ scope.foo.baz的服务器.
$scope.$watch('foo.bar + form.baz', function() {
// send old $scope.foo to server with the
// previous $scope.foo.bar and $scope.foo.baz
});
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?TIA
Bla*_*ole 15
$ scope.$ watch的第二个参数是一个接收两个参数的函数:第一个是新值,第二个是旧值.
你可以简单地观看整个foo
对象,设置的第三个参数$范围.$观赏到true
以比较对象的平等,而不是供参考.请注意,如果您的对象非常大,这可能是一个非常糟糕的主意:
$scope.$watch(
'foo',
function (newFoo, oldFoo) {
// send old $scope.foo to server with the
// previous $scope.foo.bar and $scope.foo.baz
},
true
);
Run Code Online (Sandbox Code Playgroud)
您还可以单独观看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);
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18611 次 |
最近记录: |