2016-09-20 50 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