AngularJS $scope.$watch $scope.foo的属性,但在更改之前将旧值
发布时间:2020-12-17 06:57:05 所属栏目:安全 来源:网络整理
导读:我的控制器中有一个对象$scope.foo.我想监视$scope.foo.bar和$scope.foo.baz中的任何更改并执行get请求并替换$scope.foo对象中的所有数据.在发生此更改之前,我想将$scope.foo的数据发送到具有旧$scope.foo.bar和$scope.foo.baz的服务器. $scope.$watch('foo.
我的控制器中有一个对象$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 }); 我该怎么做呢? TIA 解决方法
$scope.$watch的第二个参数是一个接收两个参数的函数:第一个是新值,第二个是旧值.
您可以简单地观察整个foo对象,并将第三个参数$scope.$watch设置为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',oldValue)) { sendAndReplace('baz',oldValue); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |