【问题标题】:Yahoo YUI library CustomEvent class - subscribe() and fire()雅虎 YUI 库 CustomEvent 类 - subscribe() 和 fire()
【发布时间】:2012-03-20 10:25:55
【问题描述】:

我对 javascript 和使用 YUI yahoo 库还很陌生。

http://developer.yahoo.com/yui/docs/YAHOO.util.CustomEvent.html

我正在尝试了解 CustomEvent 类中的订阅和触发方法。我有两个关于这些的问题

  1. 调用 fire 方法时。它会触发所有订阅该事件的函数吗?
  2. 如何触发单个事件? subscribe 方法接受参数“obj 事件触发时要传递的对象”。那里也有 一种我只能触发这个特定对象的方法?

如果我误解了 CustomEvent 中的任何内容,请纠正我。 :)

【问题讨论】:

    标签: javascript yui


    【解决方案1】:

    当调用 fire 方法时。它会触发所有的功能吗? 是否订阅了该事件?

    自定义事件(发布者)在不关心谁在听(订阅者)的情况下触发。 调用 fire() 方法会导致所有侦听器方法被触发。

    如何触发单个事件?

    您使用 :

    触发单个事件
    var onCustomEvent = new YAHOO.util.CustomEvent('onCustomEvent');
    onCustomEvent.fire();
    

    subscribe 方法接受参数“obj 事件触发时要传递的对象”。所以 有没有办法只触发这个特定的对象?

    您可以触发 customEvent 而不是对象, 传递对象用于传递参数,以便可以在 subscribe 方法中访问它们:

    onCustomEvent.fire({action:'fire'});
    onCustomEvent.subscribe(method);
    function method(event, arguments, obj) {
         var action= args[0].action;//action contains fire  
    }
    

    event 返回自定义事件的名称 arguments 是在 fire 事件中传递的参数集 obj 是 subscribe 方法中传递的参数。

    【讨论】:

      【解决方案2】:

      如果这是一个新项目,您应该使用YUI3。那么您可能会从this documentation 中受益。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-06
        • 2010-11-14
        • 1970-01-01
        • 1970-01-01
        • 2018-11-25
        • 2014-11-30
        • 1970-01-01
        相关资源
        最近更新 更多