Django模板:插入javascript变量的值

时间:2009-02-15 22:30:46

标签: javascript jquery django django-templates flot

我正在尝试在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

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

UPDATE:在我将它们传递到jQuery flot插件之前,数组中的值似乎没问题了:

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

所以我猜这与我使用Django模板的方式没有任何关系。不过,我很好奇$.plot的问题是什么。

3 个答案:

答案 0 :(得分:3)

看起来我错过了一件小事。我使用的数据系列是一个数组数组。实际上,jquery flot插件需要一个系列数组,这是一个数组数组,所以我需要一个三重嵌套数组。

从此改变:

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

到此:

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

修复了问题。

感谢所有看过这个的人。

答案 1 :(得分:0)

我在测试应用程序中尝试了这一点并且工作正常(item_list是带有浮点数作为“x”和“y”元素的dicts列表)。你必须做的其他事情你没有在这里展示。

我想知道这可能是一个奇怪的编码问题,也许你在没有意识到的情况下使用了奇怪的unicode字符?

答案 2 :(得分:0)

情节到底意味着什么?这听起来似乎应该以某种方式使用coords,在这种情况下传递一个数组的数组是正确的吗?

我原本希望采用哈希或Coords对象的数组,例如:

coords.push({ "x":-320.435118373, "y":-149.333637576 });
coords.push({ "y":-120.41321373, "y":-329.312376 });

只是一个想法。