这是我的问题。例如,我们有以下指令,它在幕后使用了一些 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 事件处理程序和观察程序的最佳实践是什么?