2009-02-15 12 views
5

Estoy tratando de asignar algunas variables de JavaScript en una plantilla de Django.Plantillas de Django: insertar valores para las variables de JavaScript

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 aún aparecen como null.

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álida, sin embargo, el uso de Firebug para ver el valor de coords , esto es lo que se produce:

[[null, null], [null, null], [null, null]...[null, null]] 

Así que es evidente que cada uno de los push() llamadas se está ejecutando correctamente y se está agregando una nueva matriz de tamaño 2 cada vez. Sin embargo, por alguna razón, los literales numéricos todos evalúan a null.

¿Alguien sabe cómo puedo conseguir que estos valores se usen correctamente?

ACTUALIZACIÓN: Parece que los valores de la matriz son bien hasta que me los paso en el plugin de 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.

+0

¿Has pasado por el código con Firebug? –

+0

Sí, como se señaló anteriormente, descubrí que el problema no está realmente relacionado con la plantilla de Django. –

Respuesta

3

Parece que me faltaba 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.

El cambio de esto:

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

a esto:

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

solucionado el problema.

Gracias a todos los que vieron esto.

0

Lo he probado en una aplicación de prueba y funciona bien (con item_list es una lista de dicts con flotantes como los elementos "x" y "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?

0

¿Qué pretende exactamente 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?

lo que habría esperado que tomar una serie de valores hash u objetos COORDS, algo así como:

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

Es sólo una idea.

+0

flot toma una matriz de matrices para la serie de datos. Esta es la primera vez que uso flot, pero he usado mucho el flotr (un imitador para el prototipo), y la documentación indica el mismo uso. –

Cuestiones relacionadas