Angular $如何监视$ scope.value的变化?

时间:2015-07-31 11:01:50

标签: javascript angularjs watch

我有一个变量的监视。 $ scope.value

我有两种可能性来更新我的价值。

  • 一个来自我的控制器,例如......通过任何服务。
  • 其他任何输入事件都可以更新我的$ scope.value。按键等..

我需要确认更新是否来自我的手表。

$scope.$watch('value',function(){
       //how to identify from were my actual change occured.   
 });

1 个答案:

答案 0 :(得分:1)

没有内置或简单或标准的方法来执行此操作。

你可以:

  • 设置临时变量以指示更改源,例如

    var sourceOfChange;
    myService.doSomething().then(function() {
        sourceOfChange = 'myService';
        $scope.value = ...
    });
    $scope.$watch('value',function() {
        if( sourceOfChange === 'myService' ) {
            ...
        }
        ...
    });
    
  • 每个源更新不同的变量,观察这些变量并执行特定于源的处理,最后更新value,例如:

    // initialization
    $scope.value = ...
    $scope.valueFromInput = $scope.$value;
    $scope.valueFromService = $scope.$value;
    
    // watching the source-specific values
    $scope.$watch('valueFromInput', function(newval) {
        doInputSpecificProcessing(newval);
        $scope.value = newval;
    });
    
    // watch the value and do common processing
    $scope.$watch('value', doCommonProcessing);
    
  • 还可以采用其他方式