【问题标题】:Django templates: insert values for javascript variablesDjango 模板:为 javascript 变量插入值
【发布时间】:2010-10-07 19:03:56
【问题描述】:

我正在尝试在 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 的问题是什么。

【问题讨论】:

  • 您是否使用 Firebug 单步执行了代码?
  • 是的,如上所述,我发现问题实际上与 Django 模板无关。

标签: javascript jquery django django-templates flot


【解决方案1】:

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

从此改变:

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

对此:

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

解决了这个问题。

感谢所有看到这里的人。

【讨论】:

    【解决方案2】:

    情节究竟是什么意思?听起来好像它应该以某种方式与坐标一起工作,在这种情况下为点传递数组数组是否正确?

    我原以为会采用一组哈希或 Coords 对象,例如:

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

    只是一个想法。

    【讨论】:

    • flot 确实为数据系列采用了一组数组。这是我第一次使用 flot,但我使用了很多 flotr(原型的模仿者),并且文档表明使用相同。
    【解决方案3】:

    我已经在一个测试应用程序中尝试过了,它运行良好(item_list 是一个带有浮点数作为“x”和“y”元素的字典列表)。一定有其他你正在做的事情没有在这里展示。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-19
      相关资源
      最近更新 更多