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

时间:2016-08-23 14:34:11

标签: javascript angularjs

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

function wizard() {
    return {
        scope: {
            raiseCancel: '&onCancel'
        },

然后再向下,我尝试检查是否附加了一个监听器。如果不是,我想执行一些默认行为。

if (scope.raiseCancel) scope.raiseCancel();
else $window.history.back();

但显然scope.raiseCancel总是很简单,因为当没有连接事件监听器时,Angular会分配一个调用angular.noop的匿名函数。如何检测我的事件是否有监听器?

1 个答案:

答案 0 :(得分:1)

You should handle your raiseCancel as an event handler, returning false to prevent the default behaviour.

Of course that mean code change in the raiseCancel handler(s) passed

if (scope.raiseCancel == null || scope.raiseCancel() !== false) {
    $window.history.back();
}