2009-02-15 32 views
5

Tôi đang cố gán một số biến javascript trong mẫu Django.Mẫu Django: chèn giá trị cho biến javascript

Tôi đang gặp sự cố khi giá trị tôi chỉ định được ghi vào trang đúng cách (tôi có thể thấy chúng trong nguồn trang), nhưng vẫn xuất hiện là null.

tôi đang làm điều này:

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

Đây là nguồn gốc trang đó được sản xuất:

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

Nó có vẻ là javascript hoàn toàn hợp lệ, tuy nhiên, sử dụng Firebug để xem các giá trị của coords , đây là những gì được sản xuất:

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

Vì vậy, rõ ràng là mỗi push() cuộc gọi đang diễn ra chính xác và một mảng mới có kích thước 2 đang được thêm vào mỗi lần. Tuy nhiên, vì lý do nào đó, tất cả các chữ số đều đánh giá là null.

Có ai biết cách tôi có thể sử dụng các giá trị này đúng cách không?

UPDATE: Dường như các giá trị trong mảng cũng tốt cho đến khi tôi chuyển chúng vào các plugin flot jQuery:

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

Vì vậy, tôi đoán này không có bất cứ điều gì để làm với cách tôi đang sử dụng các mẫu Django sau khi tất cả. Tuy nhiên, tôi tò mò muốn biết vấn đề là gì với $.plot.

+0

Bạn đã từng bước qua mã bằng Firebug chưa? –

+0

Có, như đã nói ở trên, tôi phát hiện ra vấn đề không thực sự liên quan đến mẫu Django. –

Trả lời

3

Có vẻ như tôi đang thiếu một điều nhỏ. Tôi đã sử dụng một chuỗi dữ liệu mà là một mảng của mảng. Trên thực tế, plugin jquery flot đang mong đợi một mảng của chuỗi, là mảng của mảng, vì vậy tôi cần một mảng ba lồng nhau.

Thay đổi từ này:

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

này:

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

cố định vấn đề.

Nhờ tất cả những ai đã xem xét điều này.

0

Tôi đã thử điều này trong một ứng dụng thử nghiệm và nó hoạt động tốt (với item_list là danh sách các dicts với phao nổi như các phần tử "x" và "y"). Phải có một cái gì đó khác mà bạn đang làm mà bạn không hiển thị ở đây.

Tôi tự hỏi nếu có thể đó là một vấn đề mã hóa lạ, có thể bạn đang sử dụng các ký tự unicode lạ mà không nhận ra nó?

0

Chính xác cốt truyện là gì? Có vẻ như nó sẽ làm việc với các hợp âm bằng cách nào đó, trong trường hợp nào là nó đúng để vượt qua trong một mảng các mảng cho các điểm?

tôi lại có thể ngờ rằng để có một mảng băm hoặc các vật Coords, một cái gì đó như:

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

Chỉ cần một ý nghĩ.

+0

flot thực hiện một mảng các mảng cho chuỗi dữ liệu. Đây là lần đầu tiên tôi sử dụng flot, nhưng tôi đã sử dụng flotr rất nhiều (một bản sao cho nguyên mẫu) và tài liệu chỉ ra cùng một cách sử dụng. –

Các vấn đề liên quan