簡體   English   中英

angularjs $手表無法正常工作

[英]angularjs $watch not working in function

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

您將watch置於一個沒有任何角度組件觸發的函數中,因此angularjs不知道您在該函數內部做了什么。

您應該使用一些角度分量(例如ng-click,ng-change ...)來觸發該函數,或者應該在set watch之后調用$ scope。$ apply()(盡管不建議這樣做,但是如果存在,則應該這樣做別無選擇)...

嘗試這個。

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

嘗試這個 :

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

第一件事是

$ scope。$ watch在需要時不是要執行的部分,如果您在函數中編寫它,則必須將其編譯為指令加載或控制器加載,因此它最初不會被編譯,因此無論何時調用函數,都應嘗試執行$ scope。$ watch那時,您正在嘗試監視某物(“ b”),並且您的期望是,從現在開始,它將開始監視該變量,但這並不是監視的目的,而是您需要保持對“ d”的監視如果您想在需要時執行某些操作,那么在任何時候都不總是需要時,而watch不是正確的方法,您可以簡單地編寫函數

試試這個即時通訊不是很確定,但我想它將起作用

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM