Вот моя проблема. Например, у нас есть следующая директива, в которой используется некоторый виджет 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 для прослушивания изменений в модели, будет выполнен, и, следовательно, будет запущен и метод widget 'set_value'. Это означает, что будет инициировано событие value_updated.
Мой вопрос: какова наилучшая практика для реализации аналогичного поведения в директивах, чтобы избежать дополнительных вызовов обработчиков событий и наблюдателей DOM?