4

假设你有这样的事情:

<div mydirective>
  {{boundtoscope}}
</div>

并且您希望 mydirective 应用于 $scope.boundtoscope 的更改。你如何指导 Angular 重新应用指令?

4

1 回答 1

8

在指令的链接函数 $watch 中,范围属性:

myApp.directive('mydirective', function () {
  return {
    link: function (scope, element, attrs) {
      scope.$watch('boundtoscope', function(newValue) {
          alert('boundtoscope changed');
          // do something here
      });
    }
  }
});

如果boundtoscope是数组或对象映射,并且您想查找数组/对象中项目的更改,请将objectEquality 参数设置true为执行“浅”监视(即,比较数组/对象的相等性而不是参考):

  scope.$watch('boundtoscope', function(newValue) {
      alert('boundtoscope changed')
  }, true);    // "shallow" compare

Angular 1.2 为此添加了一个新方法$watchCollection

  scope.$watchCollection('boundtoscope', function(newValue) {
      alert('boundtoscope changed')
  });  // also does a "shallow" compare
于 2013-01-21T20:28:35.137 回答