【问题标题】:stopListening to Mojo.Event停止监听 Mojo.Event
【发布时间】:2011-04-14 14:30:56
【问题描述】:

我在一个 webOS 应用中有几个事件监听器,每个事件监听器都是这样设置的:

this.controller.listen(
    'aWidget', 
    Mojo.Event.widgetEvent, 
    this.respondToWidgetEvent.bindAsEventListener(this)
);

为了停止倾听,我编写了这样的代码:

this.controller.stopListening(
    'aWidget', 
    Mojo.Event.widgetEvent, 
    this.respondToWidgetEvent.bindAsEventListener(this)
);

但是,我现在意识到我的听众可能不会停下来。当我在函数上调用bindAsEventListener 时,我每次都返回同一个对象吗?如果没有,stopListening 是否确保删除相应的侦听器?

【问题讨论】:

    标签: javascript prototype webos


    【解决方案1】:

    如果我没记错的话,每次调用 bindAsEventListener() 都会返回一个新实例。通过调用一次并设置一个 var 来防止该操作:

    bindToWidget = this.respondToWidgetEvent.bindAsEventListener(this);
    
    this.controller.listen(
        'aWidget', 
        Mojo.Event.widgetEvent, 
        bindToWidget
    );
    
    this.controller.stopListening(
        'aWidget', 
        Mojo.Event.widgetEvent, 
        bindToWidget
    );
    

    【讨论】:

    • 谢谢。我怀疑是这种情况,因为我以前在某些人的代码中看到过这种模式,但我也看到它以我的方式完成。现在我已经确认带有额外变量的其他模式是正确的。
    猜你喜欢
    • 2023-03-14
    • 2013-03-13
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2021-10-30
    • 2011-12-15
    • 2013-06-02
    相关资源
    最近更新 更多