1

我在通过 Ajax 加载的表单正文中使用 Gmap4Rails。表单中有自定义字段,其中一些可能是我在表单的非 Ajax 版本上工作的位置选择器。

使用表单的 Ajax 版本,我收到“Gmaps.my_map_id”未定义错误。

在表单的非 Ajax 版本中,我通过 JavaScript 在 HTML 页面标题中为“window.onload”调用 Gmaps.loadMaps,这是 Gmaps4Rails 的常规做法。

但是,这在 Ajax 的上下文中不起作用,因为在 window.onload 时尚未定义映射。

在我的表单中,我还为每个 Gmaps 地图对象定义了一个回调。这似乎是由于“未定义”错误而失败的原因,即使我执行“Gmaps.loadMaps();”也是如此 在 Ajax 加载的代码中定义第一个回调之前的脚本。

基本上它在代码顺序中是这样的:

  1. 在一个循环中,调用 gmaps4rails partial 以输出每个地图自定义字段
  2. 循环结束后, Gmaps.loadMaps() 被调用一次
  3. 在另一个循环中,每个 Gmaps 地图对象都为其添加了回调的 JS

关于如何使它工作的任何建议?

4

1 回答 1

1

更新:可能只是部分正确(即我确实遇到了这里概述的问题,但调用 Gmaps.loadMaps() 仍然不起作用)。

第二次更新:我不得不改变 load_... 的定义在 Gmaps 对象上,然后相应地改变 Gmaps.loadMaps 函数。我已经在https://github.com/apneadiving/Google-Maps-for-Rails/pull/94向该项目提出了拉取请求。


Gmaps.loadMaps() 调用不是问题。所以不需要替代品。让我感到困惑的是,在部分 enable_js 被称为 false 并且声明 Gmaps4RailsGoogle 的新实例的 JavaScript 和加载它的函数没有被调用。

我有一个自定义版本的部分,在我的情况下,即使 enable_js(我解释为我的应用程序的“不加载 javascript 库文件”)是错误的,我仍然执行声明新 Gmaps4RailsGoogle 实例并定义的 JavaScript load_... 函数。

话虽如此, load_... 功能似乎对我不起作用。在我的情况下,它返回以下内容:

TypeError: 'undefined' 不是函数(评估'window"load_" + key')

当我直接从控制台(而不是 Gmaps.loadMaps 调用)调用 load_... 函数时,我收到类似的错误:

"'undefined' is not a function (evaluating 'this.load_...()')"

也许与没有声明任何标记有关?对此问题的任何提示表示赞赏。

如果我逐步执行 load... 函数中的步骤,则引发错误的第一个位是 .initialize()。还在调查。

于 2011-09-14T17:29:47.960 回答