我有一个包含事件监听器的小部件:
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"});
...
小部件侦听消息,然后将相同的消息(如果需要)传递给另一个小部件。
目前我必须使用两个类似的小部件(具有相同的功能)来监听不同的消息,以避免小部件捕获自己的消息。
如何阻止小部件捕获自己的消息?
答案 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
};