我想在我的 Angular context-menu
指令中使用回调函数来触发 watch 。不幸的是,监视表达式从未被评估。
有什么想法缺少什么吗?
完整源代码请参见 http://plnkr.co/edit/PAjuvztuM8vlZ1U54XSy .
指令:
app.directive("contextMenu", function($log) {
return {
restrict: 'A',
scope: false,
link: function(scope, iElement, iAttrs, controller) {
scope.$watch(
function() { return scope.$eval(iAttrs.openOnTrigger); },
function() { $log.debug('context-menu check open:', scope.$eval(iAttrs.openOnTrigger))}
)
}
};
});
最佳答案
watch 未被评估,因为没有任何东西触发评估它的摘要周期。因为您使用 JQuery 绑定(bind)点击事件,所以 Angular 并不真正了解它们。在这种情况下,您需要使用 $apply ( https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$apply ) 手动触发摘要周期
例如:
scope.$apply(function() {
scope.onRightClick();
})
修改后的 Plunker:http://plnkr.co/edit/vELZQbBLOTv4Z5YdfH7K
关于javascript - 如何在 Angular Directive(指令)中使用回调作为监视表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38967163/