在我的指令中,我定义了以下事件:
function wizard() {
return {
scope: {
raiseCancel: '&onCancel'
},
然后,我尝试检查是否已附加监听器。如果不是,我想执行一些默认行为。
if (scope.raiseCancel) scope.raiseCancel();
else $window.history.back();
但显然 scope.raiseCancel
将始终为真,因为 Angular 会分配一个匿名函数,在没有附加事件监听器时调用 angular.noop
。如何检测我的事件是否有监听器?
最佳答案
您应该将 raiseCancel 作为事件处理程序来处理,返回 false 以防止默认行为。
当然,这意味着在 raiseCancel 处理程序中传递的代码发生了变化
if (scope.raiseCancel == null || scope.raiseCancel() !== false) {
$window.history.back();
}
关于javascript - 检测事件监听器是否附加到 Angular 中的指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39104098/