代码之家  ›  专栏  ›  技术社区  ›  Brian Var

如何通过EventTarget原型将数据传递给自定义事件?

  •  0
  • Brian Var  · 技术社区  · 7 年前

    我正在关注这个 blog post 使用EventTarget原型创建自定义事件。就我而言 EventTarget 需要修改对象才能返回 data onDataEvent 侦听器:

    o.onDataEvent("foo", function(data){
        var dataRetrieved = data.message; //retrieve data object passed to fire function
        console.log(dataRetrieved); //undefined
        alert("Foo just happened.");
    });
    

    所以我根据 this blog post 在JSFiddle中,我重写了 EventTarget.fire 函数,用于调度事件,以接受的第二个参数 数据 .

    并且还修改了onDataEvent签名以包含数据参数。这里的想法是除了打电话 event("foo") 我会向活动返回一些数据。

    我知道这个活动叫做via listeners[i].call(this, event); 但我不清楚如何在 .call .

    问题:

    如何通过EventTarget原型将数据传递给自定义事件?

    这是该代码的要点: https://jsfiddle.net/hLj7yxw9/8/

    在调试期间,我验证了使用此模式调用事件,正如您在上面的小提琴中看到的那样。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Halcyon    7 年前

    通过 data listeners[i].call(this, event, data)

    然后在你的听众中做:

    o.onDataEvent("foo", function(event, data){
        console.log(data);
    });
    

    https://jsfiddle.net/hLj7yxw9/9/

    推荐文章