Шаблоны Django: вставьте значения для переменных JavaScript - PullRequest
5 голосов
/ 16 февраля 2009

Я пытаюсь назначить некоторые переменные javascript в шаблоне Django.

У меня проблема с тем, что присваиваемые мной значения правильно записываются на страницу (я вижу их в источнике страницы), но все равно отображаются как 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.

Ответы [ 3 ]

3 голосов
/ 16 февраля 2009

Похоже, я упустил одну маленькую вещь. Я использовал ряд данных, который был массивом массивов. На самом деле плагин jquery flot ожидает массив рядов, которые являются массивами массивов, поэтому мне нужен массив с тройным вложением.

Изменение от этого:

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

к этому:

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

исправил проблему.

Спасибо всем, кто посмотрел на это.

0 голосов
/ 16 февраля 2009

Что конкретно должен делать сюжет? Звучит так, как будто он должен как-то работать с координатами, в каком случае правильно передать массив массивов для точек?

Я бы ожидал, что взять массив хэшей или объектов Coords, что-то вроде:

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

Просто мысль.

0 голосов
/ 16 февраля 2009

Я опробовал это в тестовом приложении, и оно отлично работает (с item_list, представляющим собой список диктов с плавающими элементами x и y). Там должно быть что-то еще, что вы делаете, что вы не показываете здесь.

Интересно, может быть, это странная проблема с кодировкой, может, вы используете странные символы Юникода, не осознавая этого?

...