2009-02-15 5 views
5

Ich versuche, einige Javascript-Variablen in einer Django-Vorlage zuzuordnen.Django-Vorlagen: Werte für Javascript-Variablen einfügen

Ich habe ein Problem, wo die Werte, die ich zuweise, werden auf die Seite richtig geschrieben (ich kann sie in der Seitenquelle sehen), aber immer noch als null.

Ich tue dies:

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

Dies ist die Seite Quelle, die produziert wird:

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

Es scheint durchaus möglich, Javascript zu sein, aber Firebug mit dem Wert von coords anzuzeigen , das ist was produziert wird:

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

So ist es offensichtlich, dass jeder der push() Anrufe werden korrekt ausgeführt und jedes Mal wird ein neues Array der Größe 2 hinzugefügt. Aus irgendeinem Grund werden die numerischen Literale jedoch alle zu null ausgewertet.

Weiß jemand, wie ich diese Werte richtig verwendet werden kann?

UPDATE: Es scheint, dass die Werte im Array sind in Ordnung, bis ich sie in die jQuery-Plugin flicht passieren:

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

Also ich denke, das nichts mit der Art und Weise zu tun hat ich benutze ich die Django Vorlagen doch. Dennoch bin ich neugierig, was das Problem mit $.plot ist.

+0

Haben Sie den Code mit Firebug durchgegangen? –

+0

Ja, wie oben erwähnt, habe ich festgestellt, dass das Problem nicht tatsächlich mit der Django-Vorlage zusammenhängt. –

Antwort

3

Sieht so aus, als hätte ich eine kleine Sache vermisst. Ich benutzte eine Datenreihe, die ein Array von Arrays war. Eigentlich erwartet das jquery flot plugin ein Array von Serien, also Array Arrays, also brauchte ich ein Triple-Nested Array.

von dieser Änderung:

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

dazu:

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

das Problem behoben.

Danke an alle, die sich das angeschaut haben.

0

Ich habe dies in einer Test-App ausprobiert und es funktioniert gut (mit Item_list ist eine Liste von Diktaten mit Gleitkommazahlen wie die "x" und "y" -Elemente). Es muss noch etwas anderes geben, das du hier nicht zeigst.

Ich frage mich, ob es vielleicht eine seltsame Codierung Problem ist, vielleicht verwenden Sie seltsame Unicode-Zeichen, ohne es zu merken?

0

Was genau soll Plot tun? Es hört sich so an, als ob es irgendwie mit den Koordinaten arbeiten müsste, in welchem ​​Fall ist es richtig, eine Reihe von Feldern für die Punkte zu übergeben?

Ich hätte erwartet, dass ein Array von Hashes oder Coords Objekte zu nehmen, so etwas wie:

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

nur so ein Gedanke.

+0

Flot nimmt ein Array von Arrays für die Datenreihe. Dies ist das erste Mal, dass ich flot benutze, aber ich habe viel flotr benutzt (ein Nachahmer für den Prototyp), und die Dokumentation weist auf die gleiche Verwendung hin. –