如何在指令中触发范围监视?

时间:2014-05-02 03:38:32

标签: angularjs angularjs-directive angularjs-scope

我试图用scopewatcher触发我的指令代码:

var gMaps = function($timeout, $q, GeoCoder, mockdataService) {
      return {
        restrict: 'EA',
        template: '<div class="gmaps"></div>',
        replace: true,
        link: function postLink(scope, iElement, iAttrs) {

          $scope.watch(scope.lat, function() {...

当我更改窗体上的lat属性时,它不会触发指令上的函数吗?

plnkr link

2 个答案:

答案 0 :(得分:0)

你只有错误的$部分。 $watch是附加到名为scope的变量的方法。只需使用scope.$watch代替$scope.watch

答案 1 :(得分:0)

首先,您必须使用scope.$watch(...)代替$scope.watch(...),因为您scope函数中有$scope(不是link)作为参数。您在$

之前也错过了watch

你也应该像这样使用$ watch

scope.$watch('lat',function(newVal, oldVal){
   //this will watch scope.lat
});

scope.$watch(function(){
   return scope.lat
},
function(newVal, oldVal){
  //this function will be fired everytime first function return other value than before
});