2016-08-22 60 views
1

我正在使用Rickshaw JS創建圖。要做到這一點,我創建了一個函數,它在被調用時呈現圖形。 我正面臨的問題是在腳本標記內調用時,該函數渲染一切正常,如我所料。但是,當從AJAX調用的成功函數中調用時,軸不會顯示。在AJAX成功函數中調用時,人力車JS軸呈現問題

相關的代碼片段:

<script> 
function ProbabilityPlot(a) { 
    var graph = new Rickshaw.Graph({ 
     ... 
    }); 
    graph.render(); 

    var xAxis = new Rickshaw.Graph.Axis.X({ 
     ... 
    }); 
    xAxis.render(); 

    var yAxis = new Rickshaw.Graph.Axis.Y({ 
     ... 
    }); 
    yAxis.render(); 
}; 

$.ajax({ 
    url: plotURl, 
    dataType: 'json', 
    cache: false, 
    success: function(data) { 
     ProbabilityPlot([ {{plot_data}} ]); <-- axes do NOT work 
    } 
}); 

ProbabilityPlot([ {{plot_data}} ]); <-- eveything works perfectly 
</script> 

我可以驗證傳遞給函數的參數是在兩種情況下相同。

+0

你的代碼中'.bind(this)'有什麼意義?沒有什麼是你的回調函數綁定的。你的大括號也不匹配。修正你的代碼的縮進,匹配你的大括號,並解釋你期望'this'指向你的回調。 – Tomalak

+0

目前我得到的是由_ {{plot_data}} _表示的靜態數據。現在我切換到AJAX獲取異步數據。我正在使用bind(this)將此函數附加到我創建的圖形的DOM元素。我已經更新了問題中的代碼。 – Shubham

+0

我已經從原始代碼片段中刪除_bind(this)_,因爲我覺得它與我面臨的問題無關。 – Shubham

回答

0

不知道它是如何修復的或者是什麼問題,但修復(至少現在)是將腳本移動到html的頭部。

<script src="{% static "Home/js/vendor/jquery.js" %}"></script> 
<script src="http://code.shutterstock.com/rickshaw/vendor/d3.v3.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/rickshaw/1.5.1/rickshaw.min.js"></script> 
+1

然後解決的辦法是把你自定義的JS部分放在'$(document).ready(function(){/ * ... * /});' - 或者簡單地說:'$(function(){/ * ... * /});' – Tomalak

+0

完美謝謝!不知何故錯過了..將增加支票前進..再次感謝! – Shubham

+0

有了這個,你可以將庫再次移動到文檔的末尾。 – Tomalak