4

次のようなものがあるとします。

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

そして、$scope.boundtoscope の変更時に mydirective を適用したいとします。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 に答える