2015-04-23 53 views
1

我一直在困扰某些事情,而且我正在向你们作为最后的手段。我有一个JavaScript文件(parent.js),它正在加载另一个.js文件(child.js)。该parent.js文件有一个事件订阅:将事件分派给.subscribe JavaScript方法

Class.prototype.subscribe('someEvent', someEventHandler) 

非常类似于Facebook的作用:

FB.Event.subscribe('auth.authResponseChange', auth_response_change_callback); 
FB.Event.subscribe('auth.statusChange', auth_status_change_callback); 

我想了解child.js可以如何分配(或广播)someEvent使someEventHandler被解雇。

看来我看到的所有内容都讲述了如何添加侦听器,但没有说明如何分派事件来处理附加到侦听器的方法。

引用: API-docs的 https://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/v2.3

有人用类似的解决了问题,但我不使用FB SDK,只是用例子来让我更清晰的目标:

FB.Event.subscribe not firing for certain events

事件派发一般情况如下: https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events

感谢提前一吨。

+0

有几件事情这将是巨大的,如果你能澄清:#1您使用的其他库,或写你自己的? #2它看起来像你在Class.prototype上调用一个函数,这真的不是你想要的。我 – Norguard

+0

感谢您的回应。我没有在我的文件(child.js)中使用另一个库。我不一定有权编辑parent.js代码,但它正在监听我应该分派给它的一些事件_('userDataReady')_。当我尝试:_dispatchEvent('userDataReady')_我得到一个错误:_“'EventTarget'上执行'dispatchEvent'失败..._ – jdubba

回答

0

看起来好像您可能正在使用某种未提及的库。

这就是说,这里是一些使用自定义事件与一些HTML和纯JavaScript的例子。

HTML ...

<button onclick="triggerTheThing()">Trigger the thing</button> 
<br /> 
<span id="listeningElement1">Listening Element</span> 

和JavaScript ...

绊倒我一边学习,这是你需要派遣元素监听的事件
myElement = document.getElementById("listeningElement1"); 
myElement.addEventListener("triggeredEvent", function (e) { 
    this.innerHTML = e.detail.message; 
}); 

function triggerTheThing() { 
    var newEvent = new CustomEvent("triggeredEvent", { 
     detail: { 
      message: "It was triggered!" 
     } 
    }); 
    myElement.dispatchEvent(newEvent); 
} 

一件事事件。

下面是它在行动的jsfiddle:http://jsfiddle.net/4z891LwL/

道具这个家伙:http://davidwalsh.name/customevent

+0

感谢您设置这一点,我没有这个特定的设置问题,但当我尝试将事件分派给父文件(加载我的脚本的文件)时,我最终得到一个错误。我试图调用的事件与一个订阅方法相关:_FB.Event.subscribe( 'auth.statusChange',auth_status_change_callback); _如果我正确理解了这个_subscribe_方法,那就像是一个监听器,我应该派发一个像_'auth.statusChange'_这样的事件来触发回调。是吗? – jdubba

+0

@jdubba'。订阅(...)'不是本地JS方法。无论您看到的是使用实现该方法的某种类型的JS库的页面。 –

+0

谢谢@PhilWalton所以我必须从我的child.js使用相同类型的方法?这意味着我必须建立某种类型的“订阅事件调度程序”?我见过的唯一真实的例子是Facebook引用,不幸的是,文档从来没有真正解释如何发送。 – jdubba

相关问题