【问题标题】:Angular scope $watch without listener没有监听器的角度范围 $watch
【发布时间】:2015-03-04 05:03:19
【问题描述】:

我今天看到一个注册观察者的代码如下:

scope.$watch(function() { //some code which is not relevant in current context });

Angular 文档将 $watch 方法指定为

$watch(watchExpression, listener, [objectEquality]);

那么没有监听器的观察者有什么用

提前致谢

【问题讨论】:

    标签: angularjs watch


    【解决方案1】:
    scope.$watch(function() {
        //some code which is not relevant in current context
    });
    

    是一种模式,可用于每个摘要运行一次代码。相当于:

    scope.$watch(function(){
    }, undefined);
    

    来自docs

    如果您想在调用 $digest 时收到通知,您可以 注册一个没有监听器的 watchExpression 函数。 (自从 watchExpression 可以在每个 $digest 周期执行多次,当 检测到变化,准备好多次调用你的监听器。)

    【讨论】:

      【解决方案2】:

      你不需要表达式你可以使用函数来返回要观察的变量,而不是在字符串中指定它,例如:

      $scope.myVar = true;
      
      $scope.$watch(function() {
          return $scope.myVar
      }, function(newValue, oldValue) {
      
      });
      

      【讨论】:

      • @SurenAznauryan -- 那么它是什么时候被执行的呢?
      • @SurenAznauryan - 是的......所以首先验证代码是否正在运行,然后确定它何时运行(console.log 或调试器)
      猜你喜欢
      • 2019-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-17
      • 2018-07-15
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      相关资源
      最近更新 更多