我正在努力让谷歌地图与coffeescript合作。我遇到的问题是coffeescript在(function() {
中包含javascript,这意味着变量不会成为全局范围。
有没有办法让coffeescript强制变量进入全局范围?
下面是我目前的简单代码示例。
initialize = ->
options =
lat:-34.456
lng:23.456
zoom: 10
map = new google.maps.Map document.getElementById('map-canvas'), options
return
google.maps.event.addDomListener(window, 'load', initialize)
答案 0 :(得分:0)
通常,您希望避免全局变种。
如果你绝对需要创建一个全局,你可以通过分配window
上的一个属性来实现:
window.foo = "bar";
创建一个名为foo
的全局变量(可以在没有window.
的情况下使用),因为所有全局变量都是全局对象的属性,而在浏览器上全局对象是Window对象,可通过window
全球访问。
答案 1 :(得分:0)
两个选项:
您可以附加到窗口或全局命名空间
window.initialize = ->
或在浏览器中,对this
的引用将是窗口,所以
@initialize = ->
或创建自己的命名空间并附加在那里:
myApp ?= {}
myApp.intialize = ->
然后是其他一些地方(可能在你的jQuery就绪处理程序中,如下所示):
$->
google.maps.event.addDomListener(window, 'load', myApp.initialize)