我正在尝试在Django模板中分配一些JavaScript变量。

我将分配的值正确写入页面时遇到问题(我可以在页面源代码中看到它们),但仍然显示为null

我正在这样做:

<script type="text/javascript">
  var coords = [];
  {% for i in item_list %}
    coords.push([ {{i.x}}, {{i.y}} ]);
  {% endfor %}
</script>

这是产生的页面源:
coords.push([ -320.435118373, -149.333637576 ]);
coords.push([ -120.41321373 , -329.312376 ]);
...

这似乎是完全有效的javascript,但是,使用Firebug查看coords的值是这样产生的:
[[null, null], [null, null], [null, null]...[null, null]]

因此很明显,每个push()调用均正确进行,并且每次都添加一个新的大小为2的数组。但是,由于某些原因,数字文字都将求值为null

有谁知道我如何才能正确使用这些值?

更新:在我将它们传递给jQuery flot插件之前,数组中的值似乎是正确的:
$.plot($('#mapWrapper'), coords, options);

所以我想这毕竟与我使用Django模板的方式没有任何关系。我仍然对$.plot的问题感到好奇。

最佳答案

好像我错过了一件小事。我正在使用一个数据系列,它是一个数组数组。实际上,jquery flot插件期望一个系列数组,即数组数组,因此我需要一个三层嵌套的数组。

从此更改:

$.plot($('#mapWrapper'), coords, options);

对此:
$.plot($('#mapWrapper'), [coords], options);

解决了问题。

感谢所有看过这个的人。

07-24 09:21