2014-11-01 68 views
0

我想让谷歌地图与咖啡的好玩。我遇到的问题是coffeescript将javascript包装在(function() {中,这意味着变量不会成为全局范围。Coffeescript与谷歌地图变量范围

有没有办法将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

为什么你需要他们的全局变量?一般来说,全局变量是*避免*的事情。 – 2014-11-01 13:18:23

+0

如何在不使用全局变量的情况下使用带有coffeescript的Google地图?对不起,这是新的。 – user204088 2014-11-01 13:25:32

+1

我编辑你的初始化函数来创建一个body。我认为你的意图是,但如果没有,你可以编辑它。 – 2014-11-01 18:30:35

回答

0

一般情况下,要避免全局

如果您确实需要建立一个全球性的,但是,你可以通过在window分配给一个属性做到这一点:

window.foo = "bar"; 

,创建一个全球名为foo(可没有window.使用),因为所有全局变量实际上都是全局对象的属性,而在浏览器上,全局对象是Window对象,可通过全局对象访问该对象。

+0

我如何使用coffeescript内的谷歌地图作为替代方案? – user204088 2014-11-01 13:28:16

0

两个选项:

您可以附加到窗口,或全局命名空间

window.initialize = -> 

或在浏览器中,将参照this将是窗口,因此

@initialize = -> 

或创建您自己的名称空间并附加在那里:

myApp ?= {} 
myApp.intialize = -> 

然后其他一些地方(就像在你的jQuery准备处理可能如下所示):

$-> 
    google.maps.event.addDomListener(window, 'load', myApp.initialize)