加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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);
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读