eventlistener和dispatchevent在同一个小部件中

时间:2014-05-28 19:28:56

标签: javascript javascript-events

我有一个包含事件监听器的小部件:

var MyWidget = function(parseTreeNode,options) {
this.initialise(parseTreeNode,options);
this.addEventListeners([
    {type: "tw-my-message", handler: "handleMyMessage"}
            ]);
};

并且,在同一小部件​​的处理程序中有一个dispatchevent:

MyWidget.prototype.handleMyMessage = function(event) { 
...
this.dispatchEvent({type: "tw-my-message",param: "myparam"});
...

小部件侦听消息,然后将相同的消息(如果需要)传递给另一个小部件。

目前我必须使用两个类似的小部件(具有相同的功能)来监听不同的消息,以避免小部件捕获自己的消息。

如何阻止小部件捕获自己的消息?

1 个答案:

答案 0 :(得分:0)

您需要传递活动的发布者,然后进行测试以确保活动发布者不是this。要遵循的伪代码:

MyWidget.prototype.handleMyMessage = function(event) {
    if (event.publisher === this)
        return; // bail out, I published this event

    // ...
};

dispatchEvent的伪代码:

MyWidget.prototype.dispatchEvent = function(event) {
    event.publisher = this;

    // ... loop through subscribers and notify them
};