javascript - 检测事件监听器是否附加到 Angular 中的指令

标签 javascript angularjs

在我的指令中,我定义了以下事件:

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/

相关文章:

javascript - 在 JavaScript 舍入函数中硬编码 8191 10485 个值

angularjs - 如何在 AngularJS 中创建过滤器

javascript - kendo ui 网格可从远程模板编辑弹出窗口

javascript - 解决错误时对socket.write的 promise (nodejs)

angularjs - 如何为自定义 Angular $resource 操作指定 headers 参数

javascript - 为什么 Angular-fullstack 对 Express 同时使用 put 和 patch 请求?

javascript - AngulasJS官方教程第2步数据刷新时不绑定(bind)

javascript - 响应式导航干扰其他代码元素

javascript - 使用 D3.Transition.Each 回调关闭

javascript - 在 JavaScript 中,如何使用 for 循环迭代器编号来使对象属性键唯一?