我有匿名函数,其中包含了所有javascript代码(main.js)。我将全局变量传递给函数内部之一。但问题是在加载main.js之后创建变量。我可以使用jQuery文档,但我不想等待整个文档加载。
main.js
(function(){
function example(){
alert(globalVariable)
}
})();
和
之后加载的phtml文件<script>var globalVariable = 'example'</script>
有没有办法创建自定义侦听器,何时创建自定义侦听器?类似的东西(仅作为展示我需要的例子):
main.js
(function(){
listen(mycustomlistener){
function example(){
alert(globalVariable)
}
}
})();
phtml文件
<script>
var globalVariable = 'example'
create listener(mycustomlistener)
</script>
答案 0 :(得分:0)
您期望的触发器在哪里?它是由您或事件或变更触发的吗?
如果是你正在寻找的听众/观察者设计。您可以实现自己的或使用backbone.wreqr
中提供的那个http://zen-and-art-of-programming.blogspot.in/2013/12/backbonewreqr-jumpstart.html
同样来自上面的代码,即使你创建了一个监听器,你的示例函数也不会被调用,因为它只是一个内部的功能声明而不是调用,即make it
var eventAggregator = new Backbone.Wreqr.EventAggregator();
//Subscribe for the event!
eventAggregator.on('eventName', function() {
(function example(){
alert(globalVariable)
})(); //observe the call i ve made here which is absent in urs!!!
});
//Raise the event!
eventAggregator.trigger('eventName');
您还可以使用jquery observer和observable
答案 1 :(得分:0)
这可以帮助你实现你想要的。 http://jsbin.com/mugage/1/edit?html,js,output