【问题标题】:Coffeescript with google maps variable scopeCoffeescript 与谷歌地图变量范围
【发布时间】:2014-11-02 02:29:54
【问题描述】:

我正在尝试使 google 地图与 coffeescript 配合得很好。我遇到的问题是,coffeescript 将 javascript 包装在 (function() { 中,这意味着变量不会成为全局范围。

有没有办法让咖啡脚本强制变量进入全局范围?

以下是我目前拥有的简单代码示例。

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)

【问题讨论】:

  • 为什么需要他们成为全局变量?一般来说,全局变量是要避免的事情。
  • 如何在不使用全局变量的情况下使用带有咖啡脚本的谷歌地图?抱歉,这是新手。
  • 我将您的初始化函数编辑为有一个主体。我认为您是有意的,但如果不是,您可以将其编辑回来。

标签: javascript google-maps coffeescript


【解决方案1】:

一般来说,您希望避免全局变量。

如果您绝对需要创建一个全局变量,您可以通过分配给window 上的属性来实现:

window.foo = "bar";

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

【讨论】:

  • 我如何在 coffeescript 中使用谷歌地图作为替代方案?
【解决方案2】:

两个选项:

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

 window.initialize = ->

或者在浏览器中,对this的引用将是window,所以

@initialize = ->

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

myApp ?= {}
myApp.intialize = ->

然后是其他地方(可能在您的 jQuery 就绪处理程序中,如图所示):

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

【讨论】:

    猜你喜欢
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多