angularjs $ watch无法正常工作

时间:2016-09-20 13:58:26

标签: javascript angularjs ionic-framework leaflet watch

我在使用$ 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");
    });
}

5 个答案:

答案 0 :(得分:4)

你将watch放入一个不是由任何角度组件触发的函数中,因此angularjs不知道你在该函数内部做了什么。

您应该使用某些角度组件触发该功能(例如ng-click,ng-change ...),或者您应该在设置监视后调用$ scope。$ apply()(尽管不建议但是你应该这样做)它,如果没有其他选择)...

答案 1 :(得分:1)

试试这个。

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

答案 2 :(得分:0)

试试这个:

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

答案 3 :(得分:0)

首先是那个

$ scope。$ watch不是必要时执行的部分必须编译为指令加载或控制器加载如果你在函数内写入它不会被初始编译,所以每当你调用函数时尝试执行$ scope那时候你正在试着把手表放在某个东西上(" b")并且你的期望是从现在开始它会开始观察那个变量,但这并不是为了观察你的目的而是你需要密切关注" d"如果你想在需要的时候执行某些操作,那么所有的时间都不是必需的,那么观察是不正确的方法你可以简单地写函数

答案 4 :(得分:-1)

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

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