1

我试图获取指令内部的值何时从外部更改,并且它似乎不适用于 scope.$watch 或 attrs.$observe。

这里有一把小提琴。

angular.module('zippyModule', [])
  .directive('elem', function(){
    return {
      restrict: 'E',
        transclude:true,
        template:"Directive: <span ng-repeat='i in values'>{{i}} </span>",
      scope: { values:'=zippyTitle' },
      link: function(scope, element, attrs) {
         attrs.$observe ('zippyTitle',function(newValue){
             console.log (scope.values);
         });
          scope.$watch ('values',function(newValue){
             console.log (scope.values);
         });

      }
    }
  });
4

1 回答 1

2

如果你想观察一个数组的内容(而不是它的引用),你需要通过true作为最后一个参数传递给$watch方法来使用 deep-watch:

scope.$watch ('values',function(newValue){
             console.log (scope.values);
}, true);

http://jsfiddle.net/dVzCP/

使用最新的 AngularJS (1.1.4),事情变得更容易了,因为有一种新方法 ( scope.$watchCollection) 专门用于对集合的浅表元素进行观察:http: //code.angularjs.org/1.1.4/docs/ api/ng.$ro​​otScope.Scope#$watchCollection

于 2013-05-11T09:54:40.780 回答