example - Plantillas de Django: insertar valores para las variables de JavaScript
jquery flot js download (3)
Estoy tratando de asignar algunas variables de JavaScript en una plantilla de Django.
Tengo un problema donde los valores que estoy asignando se escriben en la página correctamente (puedo verlos en el origen de la página), pero siguen apareciendo como null
.
Yo estoy haciendo esto:
<script type="text/javascript">
var coords = [];
{% for i in item_list %}
coords.push([ {{i.x}}, {{i.y}} ]);
{% endfor %}
</script>
Esta es la fuente de la página que se produce:
coords.push([ -320.435118373, -149.333637576 ]);
coords.push([ -120.41321373 , -329.312376 ]);
...
Parece ser javascript perfectamente válido, sin embargo, usando Firebug para ver el valor de coords
, esto es lo que se produce:
[[null, null], [null, null], [null, null]...[null, null]]
Por lo tanto, es evidente que cada una de las llamadas push()
se está ejecutando correctamente y cada vez se agrega una nueva matriz de tamaño 2. Sin embargo, por alguna razón, todos los literales numéricos se evalúan como null
.
¿Alguien sabe cómo puedo hacer que estos valores se usen correctamente?
ACTUALIZACIÓN: parece que los valores en la matriz están bien hasta que los paso al plugin jQuery flot:
$.plot($(''#mapWrapper''), coords, options);
Así que supongo que esto no tiene nada que ver con la forma en que estoy usando las plantillas de Django después de todo. Aún así, tengo curiosidad sobre cuál es el problema con $.plot
.
¿Qué es exactamente lo que quiere hacer la trama? Parece que debería funcionar con los coords de alguna manera, en cuyo caso ¿es correcto pasar una matriz de arreglos para los puntos?
Hubiera esperado que tomara una serie de objetos hash o Coords, algo así como:
coords.push({ "x":-320.435118373, "y":-149.333637576 });
coords.push({ "y":-120.41321373, "y":-329.312376 });
Solo un pensamiento.
Lo probé en una aplicación de prueba y funciona bien (con item_list es una lista de dicts con flotantes como elementos "x" e "y"). Debe haber algo más que estás haciendo que no estás mostrando aquí.
Me pregunto si tal vez sea un problema de codificación extraño, ¿tal vez estás usando extraños caracteres Unicode sin darte cuenta?
Parece que me estaba perdiendo una pequeña cosa. Estaba usando una serie de datos que era una matriz de matrices. En realidad, el plugin jquery flot está esperando una serie de series, que son matrices de matrices, así que necesitaba una matriz anidada triple.
Cambiando de esto:
$.plot($(''#mapWrapper''), coords, options);
a esto:
$.plot($(''#mapWrapper''), [coords], options);
arregló el problema
Gracias a todos los que vieron esto.