2011-12-21 35 views
9

Tôi đã phân lập một trường hợp kết thúc bằng jqPlot khiến cho nó bị "treo" (tạm dừng vô thời hạn) toàn bộ javascript của trang của tôi. Điều này xảy ra khi tôi sử dụng DateAxisRenderer trong biểu đồ dạng đường với một giá trị như vậy:Tại sao DateAxisRenderer của jqPlot gặp sự cố khi hiển thị một điểm dữ liệu?

(function() { 
    $(function() { 
    var data, now, plot1; 
    now = new Date; 
    // single data point in the series: 
    data = [[now, 1]]; 
    return plot1 = $.jqplot("plotTarget", [data], { 
     axes: { 
     xaxis: { 
      // if I remove this renderer, the "crash" does not happen: 
      renderer: $.jqplot.DateAxisRenderer 
     } 
     } 
    }); 
    }); 
}).call(this); 

Tại sao điều này xảy ra? đây có phải là lỗi trong jqPlot hay tôi đang làm gì đó sai?

Cũng nhận thấy: Nếu tôi thêm nhiều giá trị hơn có cùng ngày vào chuỗi, cùng một vấn đề sẽ xảy ra. Nếu tôi thêm nhiều giá trị hơn với các ngày khác nhau, sự cố sẽ biến mất.

Tôi đang sử dụng jQuery v1.6.4, jqPlot v1.0.0b2_r1012 và hiển thị trên Firefox 8.0.1.

+1

Chỉ cần tìm thấy cùng một vấn đề ... – Martin

+1

Có một sửa chữa không chính thức để lỗi này để dateAxisRenderer.js tại https://bitbucket.org/tomasc/jqplot/changeset/42d2445cdd45, nhưng bạn sẽ phải sao chép repo hoặc sao chép các thay đổi theo cách thủ công. – Kryptic

Trả lời

6

Nhìn thoáng qua ở mã số DateAxisRenderer cho thấy rằng plugin cố gắng tính toán giá trị tối thiểu và tối đa để xác định bọ ve. Điều này chỉ đơn giản gợi ý rằng tác giả ngụ ý rằng một chuỗi bao gồm tối thiểu hai điểm dữ liệu. Và điều này không được nêu trong tài liệu hoặc được kiểm tra trong mã đó là lý do plugin "treo".

Trong danh sách lỗi jqplot, bug đã được gửi (4 ngày trước vào ngày 21 tháng 1 năm 2012).

0

Tôi cũng đã phải đối mặt với vấn đề này ngày hôm nay, những gì làm tôi ngạc nhiên là cùng một mã làm việc với jsfiddle nơi tôi đã sử dụng tập lệnh từ Bitbucket.

Tôi đã sử dụng jqplot với ASP.NET MVC và đã tải xuống các tập lệnh jqplot bằng cách sử dụng phần mở rộng nuget, hóa ra phần mở rộng đó đã tải xuống phiên bản cũ hơn của jqplot gây ra sự cố.

Vì vậy, chỉ cần thay đổi DateAxisRender.js cũ thành phiên bản cập nhật mới từ here, giải quyết được sự cố của tôi hoặc bạn cũng có thể tải xuống phiên bản mới nhất từ ​​this page.

tôi đã tạo ra một demo at jsfiddle

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