【问题标题】:Using array in coffeescript在咖啡脚本中使用数组
【发布时间】:2014-07-04 02:54:00
【问题描述】:

我正在使用google-maps-for-rails (gmap4rails)。 gem 有一个方法可以创建一个数组以在 javascript 中使用。

hash = Gmaps4rails.build_markers(@users) do |user, marker|
 marker.lat user.latitude
 marker.lng user.longitude
end

这会导致以下结果:

[{:lat=>33.462209, :lng=>-86.812519, :infowindow=>"hello"}]

或者更容易阅读

[
  {
   :lat => 33.462209,
   :lng => -86.812519,
   :infowindow => "hello"
  }
]

我试图在咖啡脚本中使用它,但是我将这个数组从我的控制器中的一个变量传递到咖啡脚本中。 (我将 Paloma JS 用于特定于页面的 js,您可以在其中访问咖啡脚本中的控制器变量。)

我尝试将数组转换为 JSON 并使用gsub 替换字符,但我遇到了困难。

具体来说,我尝试转换为 JSON,然后删除逗号,hash.to_json.gsub(/,/, ''),输出

[{"lat":33.462209"lng":-86.812519"infowindow":"hello"}]

我想我需要在这里删除括号 {},并可能包括正确的咖啡脚本行缩进。

最后应该是这样的:

[
  lat: 33.462209
  lng: -86.812519
  infowindow: "hello"
]

有什么想法吗??谢谢你的时间。

【问题讨论】:

  • 你说你最后需要的'数组'不是数组。你确定这就是你想要的吗?

标签: javascript ruby-on-rails json coffeescript


【解决方案1】:

我尝试将数组转换为 JSON 并使用 gsub 替换字符,但我遇到了困难。

您应该按原样使用您正在生成的 JSON。它是完全有效的 CoffeeScript。完全没有理由尝试从中剥离任何东西。

无论如何,您尝试生成的 CoffeeScript 实际上是相同的。这……

[
  lat: 33.462209
  lng: -86.812519
  infowindow: "hello"
]

确实是[{ lat: ..., lng: ..., }],带有逗号和{}隐藏,但在语法上仍然存在。 CoffeeScript 允许您在定义对象字面量时省略{},但它仍然 是一个对象字面量,并且通过将它们从 JSON 中剥离出来,您将一无所获。无论哪种方式,您生成的结构都是相同的:一个数组,包含一个元素,它是一个对象,包含属性 lat/lng/infowindow。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 2015-09-12
    • 2013-05-29
    • 2013-01-09
    相关资源
    最近更新 更多