【问题标题】:angularjs $watch not working in functionangularjs $watch 在功能中不起作用
【发布时间】:2017-11-01 17:19:04
【问题描述】:

我在使用 $watch 时遇到了问题。当我在下面的函数之外使用 $watch 时,它可以正常工作。但是当我在 click 函数中使用它时,它不影响。 我正在等待您的建议..

 $scope.d = 1;
    var mark = L.marker(L.latLng(veri.Konum.lat, veri.Konum.lon), { title: veri.Name, data: veri, content: "" });
 mark.addTo(markersLayer);
 mark.on('click', onClick);

 function onClick(e) {

  $scope.$watch("d", function () {
        console.log("12313sadad");
    });
}

【问题讨论】:

  • 在 onClick 函数中连接手表很奇怪。通常你会在指令中连接一个手表,或者至少是一个控制器。了解您要完成的工作会有所帮助。
  • 需要更好地解释您要完成的工作、期望是什么以及当前正在发生或未发生什么。见How to Ask
  • 我在控制器内部使用了这个。我没有在这里写所有代码。抱歉解释不好

标签: javascript angularjs ionic-framework leaflet watch


【解决方案1】:

您将 watch 放入一个不会由任何 angular 组件触发的函数中,因此 angularjs 不知道您在该函数中做了什么。

您应该使用一些角度组件(例如 ng-click、ng-change...)来触发该功能,或者您应该在 set watch 之后调用 $scope.$apply()(虽然不推荐,但您应该这样做如果没有其他选择的话)...

【讨论】:

    【解决方案2】:

    试试这个。

    $scope.$watch(function() {
            return variableToWatch;
        }, function(newVal, oldVal) {
            if (newVal !== oldVal) {
                //custom logic goes here......
            }
        }, true);
    

    【讨论】:

    • 请解释一下你的答案。
    【解决方案3】:

    试试这个:

     function onClick(e) {
         if( !$scope.isWatched ) {
             $scope.$watch("d", function () {
                 console.log("12313sadad");
                 $scope.isWatched = true;
            });
         }
    }
    

    【讨论】:

      【解决方案4】:

      第一件事是

      $scope.$watch 不是在需要时执行的部分,它必须编译为指令加载或控制器加载,如果你在函数中编写它,它最初不会被编译,所以每当你调用函数时尝试执行 $scope .$watch 那时您正试图监视某事(“b”),并且您的期望是从现在开始,它将开始监视该变量,但这不是监视的目的是您需要继续监视如果您想在需要时执行某些操作,则始终不需要“d”,那么手表不是正确的方法,您可以简单地编写函数

      【讨论】:

        【解决方案5】:

        试试这个,我不太确定,但我想它会起作用

        scope.$watch("d", function (data) {
            console.log("data ",  data);
        })
        

        【讨论】:

          猜你喜欢
          • 2016-04-09
          • 2017-07-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-17
          • 2020-07-23
          相关资源
          最近更新 更多