2014-11-01 96 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)