[英]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.