2009-02-15 9 views
5

J'essaye d'assigner des variables javascript dans un template Django.Modèles Django: insérer des valeurs pour les variables javascript

J'ai un problème où les valeurs que j'affecte sont écrites sur la page correctement (je peux les voir dans la source de la page), mais apparaissent toujours comme null.

Je fais ceci:

<script type="text/javascript"> 
    var coords = []; 
    {% for i in item_list %} 
    coords.push([ {{i.x}}, {{i.y}} ]); 
    {% endfor %} 
</script> 

C'est la source de la page qui est produite:

coords.push([ -320.435118373, -149.333637576 ]); 
coords.push([ -120.41321373 , -329.312376 ]); 
... 

Cependant, il semble être javascript parfaitement valide, en utilisant Firebug pour afficher la valeur de coords , c'est ce qui est produit:

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

Il est donc évident que chacun des push() appels se passe correctement et un nouveau tableau de taille 2 est ajouté à chaque fois. Cependant, pour une raison quelconque, les littéraux numériques évaluent tous à null.

Est-ce que quelqu'un sait comment je peux utiliser ces valeurs correctement?

MISE À JOUR: Il semble que les valeurs du tableau sont bien jusqu'à ce que je les passe dans le plugin jQuery Flot:

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

Je suppose que cela n'a rien à voir avec la façon dont je J'utilise les templates Django après tout. Pourtant, je suis curieux de savoir quel est le problème avec $.plot.

+0

Avez-vous passé le code avec Firebug? –

+0

Oui, comme indiqué plus haut, j'ai découvert que le problème n'est pas lié au modèle Django. –

Répondre

3

On dirait qu'il me manquait une petite chose. J'utilisais une série de données qui était un tableau de tableaux. En fait, le plugin jquery flot attend un tableau de séries, qui sont des tableaux de tableaux, donc j'avais besoin d'un tableau à triple imbrication.

Changement de ceci:

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

à ceci:

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

résolu le problème.

Merci à tous ceux qui ont regardé cela.

0

Je l'ai essayé dans une application de test et cela fonctionne très bien (avec item_list étant une liste de dicts avec des flottants comme les éléments "x" et "y"). Il doit y avoir autre chose que vous faites que vous ne montrez pas ici.

Je me demande si c'est peut-être un problème d'encodage bizarre, peut-être que vous utilisez des caractères unicodes bizarres sans le savoir?

0

Qu'est-ce que l'intrigue est censée faire exactement? Il semble que cela devrait fonctionner avec les coords, auquel cas est-il correct de passer dans un tableau de tableaux pour les points?

je serais attendu à ce que de prendre un tableau de hachages ou des objets COORDS, quelque chose comme:

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

Juste une pensée.

+0

flot prend un tableau de tableaux pour la série de données. C'est la première fois que j'utilise flot, mais j'ai beaucoup utilisé Flotr (une copie pour le prototype), et la documentation indique la même utilisation. –

Questions connexes