【问题标题】:getting old value of scope property获取范围属性的旧值
【发布时间】:2015-11-19 07:50:55
【问题描述】:

是否有可能以某种方式获取范围属性的旧值?我有这样的代码,里面有注释:

$scope.$watch(function() {
    // here I need to get old value of some scope property, for example $scope.userInfo;
}, function() {
    $scope.callSomeFunction();
}, true);

【问题讨论】:

    标签: javascript angularjs angularjs-scope watch


    【解决方案1】:

    是的,它在第二个函数中 - 所以观看userInfo

    $scope.$watch(function() {
        return $scope.userInfo;
    }, function(newValue, oldValue) {
        console.log(oldValue);
        $scope.callSomeFunction();
    }, true);
    

    【讨论】:

    • @pavel06081991 -- 第一个函数告诉观察者要看什么……为什么你需要它?
    • 我必须观察一个范围对象,如果它按引用或按值更改,我必须调用我的函数。但我必须使用 $watch 两次才能做到这一点。第一次没有 $watch 函数的第三个参数通过引用观察,第二次用第三个参数按值观察。这很糟糕,所以我想只使用一个 $watch 并获取我的对象的新旧值来自己比较它们。
    【解决方案2】:

    如果它是关于你的手表正在观看的属性,那么你只需在回调函数中获取它。

    $scope.$watch('property', function(newValue, oldValue) {})
    

    【讨论】:

      【解决方案3】:

      试试这个简单的方法

      $scope.$watch('userInfo', function(newValue, oldValue) {    
      return oldValue;    
      })
      

      【讨论】:

        猜你喜欢
        • 2019-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多