2016-09-20 95 views
2

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

在onClick函數中連接手錶很奇怪。通常你會在指令中連接一個手錶,或者至少一個控制器。知道你想要完成什麼會有所幫助。 –

+0

需要更好的解釋你試圖完成什麼,期望是什麼以及目前或未發生什麼。看到[問] – charlietfl

+0

我用這個,在控制器裏面。我沒有在這裏寫所有的代碼。不好意思的解釋 –

回答

4

你把觀看到未通過任何角度成分觸發了一項功能,angularjs不知道你是怎麼裏面做該功能。

你應該使用某些角度組件(如ng-click,ng-change ...)觸發該函數,或者你應該調用$ scope。$ apply()set watch()之後,這樣做,如果沒有其他替代)...

+0

非常感謝你,它現在可以工作,因爲我需要。 :) –

0

試試這個:

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

試試這個我不是prety不清楚的話,但我想它會工作

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

第一件事就是

$範圍。$腕錶不是必須執行的部分,它必須被編譯爲指令加載或控制如果你在函數中寫入它,它不會被編譯,所以每當你調用一個函數時試圖執行$ scope。$ watch在那個時候,你正試圖把注意力放在某些東西(「b」)上,你的期望是現在在病房,它將開始觀察那個變量,但這不是看着它的目的是,當需要時,如果你想要執行一些操作,並且當需要的時候,你需要始終監視「d」,那麼觀察是不正確的方法你可以簡單寫功能

0

試試這個。

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

請解釋你的答案。 – BlackBeard