これが私の問題です。たとえば、舞台裏で jQuery ウィジェットを使用する次のディレクティブがあります。
module.directive('myWidget', [function() {
return {
require: "ngModel",
restrict: "A",
replace: true,
templateUrl: "templates/myWidget.html",
link: function(scope, element, attrs, ctrl) {
element.widget_name().on('value_updated', function(event) {
scope.$apply(function() {
var newModelValue = event.some_value;
ctrl.$setViewValue(newModelValue);
});
});
scope.$watch(attrs["ngModel"], function(value){
element.widget_name('set_value', value);
});
}
};
}]);
したがって、モデルの値が変更されると、モデルの変更をリッスンするために $watch を使用して登録されたハンドラーが実行され、その結果、ウィジェットの 'set_value' メソッドも実行されます。これは、「value_updated」イベントがトリガーされることを意味します。
私の質問は、DOM イベント ハンドラーとウォッチャーの余分な呼び出しを避けるために、ディレクティブに同様の動作を実装するためのベスト プラクティスは何ですか?